【发布时间】:2017-08-10 05:08:13
【问题描述】:
我希望查询一张表上的所有记录,时间为下午 5 点之后的created_at,EST WITH 考虑到夏令时。
我的数据库是 Postgres,所有时间戳都作为普通的 Rails 应用程序存储在 UTC 中。
所以,假设我有四条记录
ID, created_at, time in EST (-5 offset from UTC),
1, "2017-01-01 22:46:21.829333", 5:46 PM
2, "2017-01-01 21:23:27.259393", 4:23 PM
-------- DST SWITCH -----
ID, created_at, time in EDT (-4 offset from UTC),
3, "2017-03-20 21:52:46.135713", 5:52 PM
4, "2017-06-21 20:08:53.034377", 4:08 PM
我的查询应该返回记录 1 和 3,但应该忽略 2 和 4。
我试过了
SELECT "id",
"created_at"
FROM "orders"
WHERE (created_at::TIME WITHOUT TIME ZONE AT TIME ZONE 'utc' AT TIME ZONE 'US/Eastern' > ("created_at"::DATE + TIME '21:00')::TIME AT TIME ZONE 'utc' AT TIME ZONE 'US/Eastern')
ORDER BY "orders"."created_at" ASC
但是这个查询在不应该返回记录 2 时会返回记录 1,2,3。
【问题讨论】:
标签: sql ruby-on-rails postgresql