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

seb*_*oux 5 postgresql datetime

在 Postgres 中,我总是使用带时区的时间戳来存储我的日期。

为便于讨论,假设我必须在 2018 年 1 月 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 EST 上发生的所有事件?

Lau*_*lbe 6

AT TIME ZONE构造是您的朋友:

WHERE CAST((tscol AT TIME ZONE 'EST') AS date) = DATE '2018-01-16'
Run Code Online (Sandbox Code Playgroud)