Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PostgreSQL时间戳转换中的奇怪时区_Postgresql_Timestamp_Timezone Offset_Timestamp With Timezone_Postgresql 9.6 - Fatal编程技术网

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

PostgreSQL时间戳转换中的奇怪时区,postgresql,timestamp,timezone-offset,timestamp-with-timezone,postgresql-9.6,Postgresql,Timestamp,Timezone Offset,Timestamp With Timezone,Postgresql 9.6,此SQL: select to_timestamp(extract(epoch from '0001-01-01 00:00:00'::timestamp)) 生成此输出: 0001-01-01 08:06:00+08:06 我意识到to_timestamp()总是添加一个时区,因此在时区段中增加了8小时和+8。但是什么是:06?那额外的6分钟是从哪里来的呢 编辑 如果我最初执行将本地时区设置为“UTC”然后我得到了预期的结果。在UTC发明之前,每个城市都有自己的本地时间,彼此之间的差异大多只

此SQL:

select to_timestamp(extract(epoch from '0001-01-01 00:00:00'::timestamp))
生成此输出:

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

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

编辑


如果我最初执行
将本地时区设置为“UTC”然后我得到了预期的结果。

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

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

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

事实上,台北从UTC+08:06
改为UTC+08:00,所以之前的日期将有
+08:06
偏移量


如果您将时区设置为UTC,则不会发生这种情况,基本上是因为UTC的偏移量为零且从不改变。

并且仅适用于古代日期?。。1812年怎么样?1812年,同一期+6分钟和08:06时区。这似乎发生在1900年之前的所有日期。这不是转换,请尝试
选择“1916-05-01 00:00:00”::timestamptz
选择'1916-08-01 00:00:00'::timestamptz这些很好。转换是从时间戳到历元(秒)再到历元。哇!那真的很有趣。非常感谢。