我的PostgreSQL中有一个timestamp
类型。(无时区)默认情况下,此timestamp
保存为UTC时间。
我想选择一些记录:
- 介于(时间1)。。。(时间2)
- 因此,时间1和时间2是以EST时间给出的值。例如,时间1==美国东部时间1月10日晚上10点(其中==UTC 1月11日凌晨3点)
我知道我可以使用BETWEEN
和AT TIME ZONE
的组合。我在不同的查询中单独使用,有点像:
timestamp::TIMESTAMPTZ AT TIME ZONE '-05:00'
"timestamp" BETWEEN '2016-01-13 00:00:00.000000' AND '2016-01-14 00:00:00.000000'
但我只是不知道如何在同一个查询中一起使用它们——请原谅我在SQL查询中的Noobness。
如有任何帮助,我们将不胜感激。
感谢
您可以使用ActiveSupport和Active record来做一些类似的事情
Object.where(created_at: Time.new(2016, 01, 13, 1, 1, 1, '-05:00')..Time.new(2016, 01, 14, 1, 1, 1, '-05:00'))
然后您可以使用TimeWithZonehttp://api.rubyonrails.org/classes/ActiveSupport/TimeWithZone.html#method-c-new适用于任何时区修改。然后ActiveSupport和ActiveRecord将为您处理所有奇怪的事情。