在Postgres中,我总是使用带时区的时间戳来存储我的日期。
为了便于讨论,我们假设我必须在2018-01-16的东部时区(EST-04)当时(上午8点,下午1点和晚上10点)存储活动。数据库中的时间戳为:
- 上午8点:“2018-01-16 12:00:00.000 + 00”
- 下午1点:“2018-01-16 17:00:00.000 + 00”
- 晚上10点:“2018-01-17 02:00:00.000 + 00”
如何编写Postgres SQL查询以获取2018-01-16美国东部时间发生的所有事件?
答案 0 :(得分:3)
AT TIME ZONE
构造是你的朋友:
WHERE CAST((tscol AT TIME ZONE 'EST') AS date) = DATE '2018-01-16'
答案 1 :(得分:0)
SELECT fields, stamp FROM table WHERE stamp < '2018-01-16T00:00:00.000-04:00'
PostgreSQL接受ISO 8601格式和标准SQL格式。
您还可以使用=
,<=
,=
,>=
,>
和BETWEEN
,这是包容性的。