在MySQL的情况下,
TIMESTAMP 值存储为自纪元以来的秒数('1970-01-01 00:00:00' UTC)`
如果 PostgreSQL 版本小于或等于 9.6
时间戳值存储为 2000-01-01 午夜之前或之后的秒数
如果 PostgreSQL 的版本大于等于 10,则对此没有解释
关于 PostgreSQL 的内部逻辑,我有两个问题。
- 它仍然使用与 9.6 版相同的标准吗?
- 为什么是“午夜 2000-01-01”?Unix 纪元从
1970-01-01 00:00:00 UTC
. J2000 纪元从12 noon (midday) on January 1, 2000
.
似乎只有少数系统使用2000-01-01 00:00:00
.
因为 PostgreSQL 提供了将 UNIX 纪元转换为时间戳to_timestamp
或反之亦然的函数EXTRACT(EPOCH FROM ...)
,所以使用不同于 UNIX 纪元的标准似乎需要额外的偏移计算。