【发布时间】:2017-04-23 03:31:40
【问题描述】:
我很难理解"AT TIME ZONE 'localtime'" 究竟是如何工作的?通过玩它,我发现它的行为与"AT TIME ZONE 'UTC'" 完全一样……但是为什么呢? "localtime" 在 postgres 中是 "UTC" 的同义词吗?或者它来自某些设置(环境?连接时区?虽然都检查了,但似乎它们不相关)......
有"localtime" function,但我认为这里不涉及。
示例 SQL:
# date
Thu Dec 8 12:00:05 AEDT 2016
# SELECT LOCALTIMESTAMP;
----------------------------
2016-12-08 01:13:29.444725
# SELECT LOCALTIMESTAMP AT TIME ZONE 'America/New_York';
-------------------------------
2016-12-08 06:08:31.183103+00
# SELECT LOCALTIMESTAMP AT TIME ZONE'localtime';
------------------------------
2016-12-08 01:09:25.294063+00
# SELECT LOCALTIMESTAMP AT TIME ZONE 'utc';
-------------------------------
2016-12-08 01:09:44.32587+00 -- SAME AS ABOVE
# SET TIME ZONE 'America/New_York';
# SELECT LOCALTIMESTAMP;
----------------------------
2016-12-07 20:13:34.924647
# SELECT LOCALTIMESTAMP AT TIME ZONE 'localtime';
------------------------------
2016-12-07 15:10:08.188197-05
# SELECT LOCALTIMESTAMP AT TIME ZONE 'utc';
------------------------------
2016-12-07 15:10:44.88332-05 -- SAME AS ABOVE
有什么提示吗?它是否记录在某处?
【问题讨论】:
-
这样的问题必须提供正在使用的 Postgres 版本。也相关:服务器操作系统和时区设置,以及使用 `SET TIME ZONE
. And do you have a non-default setting fortimezone_abbreviations` 使用SHOW timezonebefore 得到什么?
标签: postgresql time timezone