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

标签 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 分钟从何而来?

编辑

如果我最初执行 set local timezone to 'UTC'; 然后我得到预期的结果。

最佳答案

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

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

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

实际上,台北从UTC+08:06变成了UTC+08:00只在Jan 1st of 1896 , 因此它之前的日期将具有 +08:06 偏移量。

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

关于postgresql - PostgreSQL 时间戳转换中的奇怪时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44820276/

相关文章:

sql - 如果参数为 'where' postgresql,如何避免 'NOT PASSED' 子句中的列

java - 在 JPA Hibernate 的分层表中删除/查找节点

R 将时区偏移量添加到 POSIXct 类

postgresql - Sequelize设置时区查询

php - 结合两种资源 PHP

java - YML 文件中的 HikariCP DataSourceProperties

database - PostgreSql:获取格式奇怪的 "timestamp with time zone"

audio - 如何使用时间戳注释标记和提取音频

Excel VBA : Convert a date string to a Unix timestamp

php - date() 和夏令时的问题