【发布时间】:2018-11-03 04:50:15
【问题描述】:
首先,official document 表示以下内容:
为了解决这些困难,我们建议使用日期/时间类型 使用时区时同时包含日期和时间。我们不推荐 使用带时区的时间类型(尽管它支持 PostgreSQL 用于遗留应用程序并符合 SQL 标准)。 PostgreSQL 假定任何类型的本地时区 仅包含日期或时间。
在时间戳数据的显示上,它说:
所有可识别时区的日期和时间都以 UTC 格式在内部存储。他们 在 TimeZone 指定的区域中转换为本地时间 显示给客户端之前的配置参数。
因此,我将列定义为timestamp 数据类型,并以"2018-05-24 09:30:00+05:30" 插入到表中。基于上述几点,我希望看到 UTC 的时间戳(在 SELECT 查询输出中),即 2018-05-24 04:00:00,因为 TIME ZONE 设置为 UTC。而且,当我将参数更改为
SET TIME ZONE INTERVAL '+05:30' HOUR TO MINUTE;
我希望看到2018-05-24 09:30:00。但是,无论时区参数如何,我都看到查询输出为2018-05-24 09:30:00。这个观察结果与文档有何吻合?
对数据库的插入是使用 Javascript 完成的,而其他操作是使用 psql 完成的。
【问题讨论】:
标签: postgresql datetime timezone timestamp