【问题标题】:Specifying the timezone of a date in the WHERE clause of a Postgres SQL query在 Postgres SQL 查询的 WHERE 子句中指定日期的时区
【发布时间】:2018-01-17 15:39:35
【问题描述】:

在 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 发生的所有事件?

【问题讨论】:

    标签: postgresql datetime


    【解决方案1】:
    SELECT fields, stamp FROM table WHERE stamp < '2018-01-16T00:00:00.000-04:00'
    

    PostgreSQL 接受 ISO 8601 格式和标准 SQL 格式。

    您还可以使用=&lt;==&gt;=&gt;BETWEEN,包括在内。

    【讨论】:

      【解决方案2】:

      AT TIME ZONE 构造是你的朋友:

      WHERE CAST((tscol AT TIME ZONE 'EST') AS date) = DATE '2018-01-16'
      

      【讨论】:

        猜你喜欢
        • 2020-12-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-06
        • 2023-03-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多