我有一个运行postgresql 8.3.5的XP VM(Xen)。 一切都很好,直到上个星期,时间提前了1个小时。
所以XPconfiguration为Mountain时间,没有ntp或任何其他同步 – 这台机器没有任何互联网接入。
Postgres在postgresql.conf中有所有的默认设置,所以它应该拾取系统时间。
这是各种命令的输出…当我运行这些命令时,当前的山区时间是“14:06”….(请忽略下面的分钟/秒/毫秒差异)
SHOW TIME ZONE; "US/Mountain" select now() "2011-11-01 15:06:42.885-06" select now()::timestamptz "2011-11-01 15:06:51.828-06" select localtime "15:06:59.799" select timezone('MST'::text, now()) "2011-11-01 14:07:10.535"
正如你所看到的,只有最后一个命令才能正确显示时间。 我不知道为什么突然要提前1小时。
其他有趣的观察:
运行在同一台机器上的JBOSS应用程序服务器具有相同的行为
另一个独立的Java应用程序显示正确的时间虽然…
因此,如果在操作系统级别出现问题,应该在操作系统上运行的所有应用程序中保持一致…但其中一些像JBOSS,postgresql显示的是15:06,但其他像我的独立Java应用程序show 14:06
看起来像你需要更新你的PostgreSQL版本。 我相信8.3.16是最新的。 DST规则在过去几年已经发生了变化。
附录:根据JBOSS,现在是来自操作系统还是JVM,取决于该链接中概述的场景。 所以你应该检查JVM和OS。