如果我在Postgres 9.2上执行
show timezone
在我的机器上,它返回本地时区
America/Denver
当我对我旁边的人运行相同的 postgres 命令时,它会返回
US/Eastern
有谁知道为什么 Postgres 服务器会为 2 个不同的人使用两个不同的时区?
语句show time zone
显示当前客户端会话的时区。这可能是也可能不是PostgreSQL服务器的时区。
若要查看其工作原理,请在同一台计算机上打开两个终端会话,并使用 psql 将每个会话连接到数据库。(我正在连接到一个名为"沙盒"的数据库。我的 PostgreSQL 服务器设置为本地时间。也就是说,postgresql.conf 有行timezone = 'localtime'
.(
在第一个会话中,将时区设置为加利福尼亚州伯克利。
sandbox=# set time zone 'PST8PDT';
(set
的默认范围是 session
。此语句等效于 set session time zone 'PST8PDT';
.(
在第二个会话中,将时区设置为 UTC。
sandbox=# set time zone 'UTC';
这些都不是我的本地时区。
现在在每个会话中运行show time zone
。第一个将返回"PST8PDT";第二个将返回"UTC"。服务器的时区仍然是本地时间。
如果我删除其中一个连接,然后再次连接,则会返回到本地时间。
沙盒=# 显示时区; 时区 ----------- 当地时间