我的应用程序跟踪数据库中具有日期和持续时间的事件。我正在尝试查询所有状态为“即将到来”的事件,这些事件的日期和持续时间都小于今天。到目前为止,我已经尝试过:
events = Event.where('status = "Upcoming" and date <= (? + duration)', Date.parse(Time.now.to_s))
其中 date 是我的日期列,duration 是一个整数,表示事件运行的天数。上面的查询产生一个空集和一个 MySQL 警告“截断不正确的 DOUBLE 值:'2013-05-09'
数据库目前是 MySQL,但将来可能会改变。
我找到了一个可以提供正确结果的 SQL 查询,但是由于 date_add() 调用,我觉得 Railsy 不够:
SELECT `events`.* FROM `events` WHERE (status = "Upcoming" and date_add(date, interval 2 day) <= '2013-05-09');
如果必须,我会使用 date_add() 函数,但我不知道 Rails 语法如何生成这样的查询。想法?