如何使用 Rails 和 ActiveRecord仅比较时间值?例如,查找下午 3:00 之后创建的所有行?
我尝试使用Time.parse
,但是他们似乎期望完整的 DateTime 值,而不是 Time (晚上 11:00 等)。
我基本上是在寻找两个日期之间存在的所有行,然后是两次之间。例如,在“3:00PM”之后创建的“21/01/2012”和“23/02/2012”之间创建的所有行。日期部分似乎工作正常,但是如果没有简单的 SQL,我似乎无法让时间部分工作。
如何使用 Rails 和 ActiveRecord仅比较时间值?例如,查找下午 3:00 之后创建的所有行?
我尝试使用Time.parse
,但是他们似乎期望完整的 DateTime 值,而不是 Time (晚上 11:00 等)。
我基本上是在寻找两个日期之间存在的所有行,然后是两次之间。例如,在“3:00PM”之后创建的“21/01/2012”和“23/02/2012”之间创建的所有行。日期部分似乎工作正常,但是如果没有简单的 SQL,我似乎无法让时间部分工作。
你可以这样做:
User.where("created_at > ? and created_at < ?", Time.now - 3.days, Time.now)
据我了解,您正在应用一个函数来从 SQL 中的 datetime 属性中提取时间。像select HOUR(created_at)
...
ActiveRecord 无法做到这一点,但是 gem squeel在 Ruby 中做到了。
Person.select{coalesce(name, '<no name given>')}
但是没有什么比用纯 SQL 做的根本不同。