PostgreSQL 时间戳转换中的奇怪时区

Iam*_*mIC 3 postgresql timestamp timezone-offset timestamp-with-timezone postgresql-9.6

这个 SQL:

select to_timestamp(extract(epoch from '0001-01-01 00:00:00'::timestamp))
Run Code Online (Sandbox Code Playgroud)

产生这个输出:

0001-01-01 08:06:00+08:06

我意识到to_timestamp()总是添加一个时区,因此额外的 8 小时和+8时区部分。但什么是:06?额外的 6 分钟从哪里来?

编辑

如果我最初执行,set local timezone to 'UTC';那么我会得到预期的结果。

小智 5

在发明UTC之前,每个城市都有自己的当地时间,大部分时间彼此之间只有几分钟的差异。

就在时区标准化(以及每个人各自采用)之后,当地时间被设置为我们今天所知道的值。

这就是为什么您会在古代日期中得到这些奇怪的结果,特别是在 1900 年之前。

实际上,台北在1896 年1 月 1才从UTC+08:06变为,因此在它之前的日期会有偏移。UTC+08:00+08:06

如果您将时区设置为 UTC,则不会发生这种情况,主要是因为 UTC 的偏移量为零且永远不会改变。

  • 哇!这真的很有趣。谢谢你。 (3认同)