如何查询日期范围A或日期范围B内的记录

时间:2015-11-25 14:19:03

标签: mysql ruby-on-rails ruby-on-rails-4 activerecord rails-activerecord

我正在尝试在日期范围内获取具有日期范围(例如event_startevent_end)的记录(事件),因此用户可以查询分别位于日期A和日期之间的所有事件。第B天。

如果Rails 5可用,我可以使用.or,但是如何为Rails 4编写这个?

d = Date.today
Event.all.where(:date_start => d.beginning_of_week..d.end_of_week).or.where(:date_end => d.beginning_of_week..d.end_of_week)

更新

我认为arel可以完成这项工作。

2 个答案:

答案 0 :(得分:1)

类似的东西:

Event.all.where('date_start >= ? AND date_end < ?', event_start, event_end)

如果与您的范围的最后一天是同一天,您可能需要将一天添加到event_end,以便排除那一天,例如:

event_end + 1.days

另一种方法是使用BETWEEN

Event.all.where('date_start BETWEEN ? AND ? AND date_end BETWEEN ? AND ?', event_start, event_end, event_start, event_end)

答案 1 :(得分:0)

试试这个: -

d = Date.today
date_week = d.beginning_of_week..d.end_of_week
Event.where('date_start = ? OR date_end = ?', date_week, date_week)

希望这可能有用!!