我如何在两次之间进行搜索?

时间:2013-01-18 09:10:08

标签: ruby-on-rails ruby time rails-activerecord

如何使用Rails和ActiveRecord比较时间值?例如,查找在下午3:00之后创建的所有行?

我尝试使用Time.parse,但他们似乎期待完整的DateTime值,而不是时间(晚上11点等)。

我基本上是在寻找两个日期之间存在的所有行,然后是两次之间。例如,在“3:00 PM”之后创建的“21/01/2012”和“23/02/2012”之间创建的所有行。日期部分似乎工作正常,但是如果没有普通的SQL,我似乎无法让时间部分工作。

2 个答案:

答案 0 :(得分:1)

您可以这样做:

User.where("created_at > ? and created_at < ?", Time.now - 3.days, Time.now)

答案 1 :(得分:0)

据我所知,你正在应用一个函数来从SQL中的datetime属性中提取时间。像select HOUR(created_at) ...

这样的东西

ActiveRecord不能这样做,但是gem squeel在Ruby中做到了。

Person.select{coalesce(name, '<no name given>')}

但是在普通的SQL中没有什么比这更好的了。