Ruby on rails Rails(3.2)/Postgres使用方法查询日期时间字段,或者如何查找该日期的11:59:59?

Ruby on rails Rails(3.2)/Postgres使用方法查询日期时间字段,或者如何查找该日期的11:59:59?,ruby-on-rails,ruby-on-rails-3,postgresql,activerecord,Ruby On Rails,Ruby On Rails 3,Postgresql,Activerecord,我有一个带有过期日期时间字段的模型,我一直在将其与finds中的Time.now进行比较 现在,我的客户希望模型在视图中保持到到期日的午夜 因此,我认为我需要做的是能够在字段上调用end_of_day方法作为find的一部分 类似于 Model.where'expiration.end_of_day?',Time.zone.now.start\u of_day,以便进行比较。现在的类是Time,而ActiveRecord从过期字段返回类ActiveSupport::TimeWithZone。 M

我有一个带有过期日期时间字段的模型,我一直在将其与finds中的Time.now进行比较

现在,我的客户希望模型在视图中保持到到期日的午夜

因此,我认为我需要做的是能够在字段上调用end_of_day方法作为find的一部分

类似于

Model.where'expiration.end_of_day<?',Time.now

这当然行不通,也许我只是把这一切都搞错了


我想这是在使用Postgres9.1的Rails3.2上实现的。它在Heroku上。

在纯postgresql中是这样的:

expiration < current_date + 1
我假设您的expiration列是一个时间戳,而不是一个日期,这就是问题的根源。我认为以下内容应该适合您:

Model.where('expiration > ?', Time.now.beginning_of_day)  # All records which expire today or later

是的,这是一个时间戳。用准时开始的方式来处理这个问题。现在,而不是我所看到的方式是完美的。这实际上需要是Model.where'expiration>?',Time.zone.now.start\u of_day,以便进行比较。现在的类是Time,而ActiveRecord从过期字段返回类ActiveSupport::TimeWithZone。
Model.where('expiration > ?', Time.now.beginning_of_day)  # All records which expire today or later