为什么选择 localtimestamp 会在 2 台不同的机器上使用 Postgres 返回不同的时区



如果我在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"。服务器的时区仍然是本地时间。

如果我删除其中一个连接,然后再次连接,则会返回到本地时间。

沙盒=# 显示时区; 时区 ----------- 当地时间

相关内容

  • 没有找到相关文章

最新更新