【发布时间】:2011-07-11 01:01:38
【问题描述】:
我正在运行带有 PostgreSQL 数据库的 Rails 3.0.4,并创建了一个名为 ordered_at 的 DateTime 字段。
我通过使用 Time.now 进行创建来设置它,我想使用 where("ordered_at > ?", params[:later_than] 之类的东西查询 ordered_at 字段,但如果我输入的时间晚于 1.minute.from_now 之类的东西,我会得到没有结果的结果应该是。
详细说明:ordered_at 是 2011-03-08 11:11:49 和 params[:later_than] 是 2011-03-08 11:09:58 UTC。
我认为这是因为 Time 对象中的时区在数据库中不存在(ordered_At 字段是 timestamp without time zone 数据类型)。
有没有人遇到同样的问题可以帮助我?
【问题讨论】:
-
您能否检查日志并将由此生成的 SQL 查询粘贴到此处?
-
SQL 看起来像这样:
SELECT COUNT(*) FROM "course_orders" WHERE "course_orders"."finished" = 't' AND (DATE(ordered_at) = '2011-03-08') AND (ordered_at > '2011-03-08 12:16:09.708236' )。一个提示:我正在为测试生成我的数据 -
所以这是我的固定装置之一:
course_order_for_today_order_of_hans: ordered_at: <%= Time.now - 1.hour %>这会将时间设置为有点不在 UTC -
@leons...
<%= Time.now.utc - 1.hour %>可能会起作用。
标签: ruby-on-rails ruby activerecord time comparison