在Postgres SQL查询的WHERE子句中指定日期的时区

时间:2018-01-17 15:39:35

标签: postgresql datetime

在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美国东部时间发生的所有事件?

2 个答案:

答案 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,这是包容性的。