如何在“Time.now”减去x小时的时间范围内显示数据库记录?

时间:2014-02-24 13:00:39

标签: mysql ruby-on-rails

我使用条件和时间范围从“Time.now”到-2小时的查询。

time_range = Time.now-2.hour..Time.now
Model.all(:conditions => { :created_at => (time_range) })

目前,将不会显示超过2小时前创建的所有数据库记录。显示小于2小时“旧”的所有记录。

  

E.g在当前时间创建的一些记录,根据我的查询将显示   我正确的结果,

但是,如果我来到第二天并期待相同的结果,我将无法看到它。

所以,我的目标是在时间范围内显示记录......

2 个答案:

答案 0 :(得分:1)

试试这个:

('created_at > ?', 2.hours.ago)

答案 1 :(得分:0)

要执行时间范围,您需要将其拆分为查询中的开始和结束时间。但是,如果您的某个时间是Time.now,并且以后永远不会创建任何记录,即使用created_at> Time.now,那么你可以跳过Time.now规范。

所以,通常是

@models = Model.all(:conditions => ["created_at >= ? and created_at <= ?", time_a, time_b])

当time_b永远不会在将来,这可以简化为

@models = Model.all(:conditions => ["created_at >= ? ", time_a])