【发布时间】:2013-10-07 17:56:16
【问题描述】:
prompt$ date
Mon Oct 7 17:32:24 UTC 2013
prompt$ psql -U postgres
postgres=# show timezone;
TimeZone
----------
GMT
(1 row)
postgres=# select now();
now
-------------------------------
2013-10-07 20:32:42.354384+03
(1 row)
为什么它以 +03 时区格式返回?我显然在这里错过了什么?
编辑:我解决了问题,但问题仍然存在。这是发生了什么:
我更改了系统的操作系统时区,但没有重新启动 postgres 服务器。以前的操作系统时区确实是 +03。在我重新启动 postgres 后,它工作正常。但这是一个奇怪的情况:postgresql.conf 没有明确定义任何时区,客户端(psql)应该始终输出“显示时区”报告的时区中的时间戳。所以还有这个无法解释的问题:
为什么 psql 将 GMT 报告为时区设置,但在操作系统新时区显示时间戳。这是预期的行为吗?
【问题讨论】:
-
我已经解决了问题,但对我看到的行为仍然不满意。查看我的编辑
-
除非您在 postgresql.conf 中配置了时区,否则将使用系统默认时区 - 在 postgresql 服务器启动时配置的时区。 “psql”将根据“timezone”设置显示timestamptz-s(默认值==服务器的默认值),无论客户端的时区选择如何。还有一件事:注意 ALTER USER ... SET timezone to '...';
标签: postgresql timezone