Sql 选择日期差小于X小时的所有ActiveRecord实例
我有一个Rails 4Sql 选择日期差小于X小时的所有ActiveRecord实例,sql,ruby-on-rails,ruby-on-rails-4,activerecord,Sql,Ruby On Rails,Ruby On Rails 4,Activerecord,我有一个Rails 4ActiveRecord模型,它有两个DateTime字段:dt1和dt2 如果dt1之后dt2小于X(比如18)小时,如何检索此模型的所有实例?请尝试以下操作: Model.where(%q{ dt2 - dt1 < interval '18 hours' }) Model.where('dt2
ActiveRecord
模型,它有两个DateTime
字段:dt1
和dt2
如果dt1
之后dt2
小于X(比如18)小时,如何检索此模型的所有实例?请尝试以下操作:
Model.where(%q{ dt2 - dt1 < interval '18 hours' })
Model.where('dt2<?',dt1-x.hours)
?@kiddorails:问题是dt1
每行可能不同。它不是适用于每一行的固定值。也就是说,对于每一行,我们需要检测它自己的dt1
值与它自己的dt2
值之间的时差。理解你的观点:)我用AREL成功地做到了,但似乎Mathias已经在下面建议了一个更好的方法:)只是一个小的修正:将dtu diff
实际注入到查询中,您必须执行:Mode.where(“dt2-dt1
对,忘记了字符串插值。对不起;)我再加上。
dt_diff = '22 days' # or 18 hours or 3 years
Model.where(%q{ "dt2 - dt1 < interval '#{dt_diff}'" })