postgresql 数据库上的时间不正确

postgresql 数据库上的时间不正确

我有一台运行 postgresql 8.3.5 的 XP VM (Xen)。一切正常,直到上周的某个时候,时间显示提前了 1 小时。

因此,XP 配置为山区时间,没有 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 个小时。

其他有趣的观察:

  1. 在同一台机器上运行的 JBOSS 应用程序服务器具有相同的行为

  2. 另一个独立的 Java 应用程序显示了正确的时间......

因此,如果操作系统层面出现问题,则操作系统上运行的所有应用程序都应该一致...但其中一些应用程序(如 JBOSS、postgresql)显示 15:06,但其他应用程序(如我的独立 java 应用程序)显示 14:06

答案1

看起来您需要更新您的 PostgreSQL 版本。我相信 8.3.16 是最新版本。DST 规则在过去几年中发生了变化。

附录:根据杰博斯它的时间来自 OS 或 JVM,具体取决于该链接中概述的场景。因此您还应该检查 JVM 和 OS。

相关内容