我的应用程序跟踪数据库中具有日期和持续时间的事件。我试图查询所有事件的状态为“即将到来”,其日期和持续时间均小于今天。到目前为止,我曾尝试:Rails 3 ActiveRecord查询语法日期列加整数列小于今日日期
events = Event.where('status = "Upcoming" and date <= (? + duration)', Date.parse(Time.now.to_s))
其中date是我的日期栏,和持续时间是表示天的事件运行数量的整数。上面的查询会产生一个空集和MySQL的警告“截断不正确DOUBLE值:‘2013年5月9日’
数据库当前MySQL,但是在未来可能改变
我发现了一个SQL查询。这将提供正确的结果,但它并不感到Railsy足以让我因DATE_ADD()调用:
SELECT `events`.* FROM `events` WHERE (status = "Upcoming" and date_add(date, interval 2 day) <= '2013-05-09');
如果让我来,我会使用DATE_ADD()函数,但我不知道Rails语法如何产生这样的查询。想法?
完美解决问题!速度并不是真正的问题,因为查询是在使用resque和resque-scheduler调度的每日后台作业中完成的。我喜欢模型变化和钩子的想法。谢谢! – 2013-05-11 15:39:10
我正在寻找Rails的方式来表示'date_add()'。问题在于数百万用户,这需要将它们加载到内存中并可能超出云实例。 – Chloe 2016-01-21 20:54:23