Ruby on rails ActiveRecord多个where日期范围
是否有一种更为ActiveRecord惯用的方法来查找哪些记录在某个日期范围内的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(”(在>=?处开
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
,很高兴知道,谢谢。