Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails ActiveRecord多个where日期范围_Ruby On Rails_Ruby_Activerecord - Fatal编程技术网

Ruby on rails ActiveRecord多个where日期范围

Ruby on rails ActiveRecord多个where日期范围,ruby-on-rails,ruby,activerecord,Ruby On Rails,Ruby,Activerecord,是否有一种更为ActiveRecord惯用的方法来查找哪些记录在某个日期范围内的start\u或end\u?(基本上,需要找到在给定时间范围内开始或结束的记录)。以下是我目前正在做的事情: Project.where('(start_at >= ? AND start_at <= ?) OR (end_at >= ? AND end_at <= ?)', start_at, end_at, start_at, end_at) Project.where(”(在>=?处开

是否有一种更为ActiveRecord惯用的方法来查找哪些记录在某个日期范围内的
start\u
end\u
?(基本上,需要找到在给定时间范围内开始或结束的记录)。以下是我目前正在做的事情:

Project.where('(start_at >= ? AND start_at <= ?) OR (end_at >= ? AND end_at <= ?)', start_at, end_at, start_at, end_at)
Project.where(”(在>=?处开始,在>=?处开始,在处结束)您可以传递到
where
并使用

time_range = (start_at..end_at)
Project.where(start_at: time_range).or(Project.where(end_at: time_range))

对于Rails 4,您可以在
散列
参数之间使用

Project.where(
  "(start_at BETWEEN :start_at AND :end_at) OR (end_at BETWEEN :start_at AND :end_at)",
  start_at: start_at.beginning_of_day, end_at: end_at.end_of_day)

Rails 4支持
吗?不支持,或Rails 5中的不包括在内?这就是为什么要使用
每天开始
每天结束
?这取决于数据库列的数据类型。
每天开始
每天结束
确保查询将返回带有
日期的相关结果ME
键入。也许使用Arel的大于/小于函数会有所帮助。谢谢omnikron啊,
gt
lt
,很高兴知道,谢谢。