Postgres 会处理 Unix Epoch 问题吗?

Dan*_*sch 5 postgresql dbms

我想知道 Postgres 是否会处理 2038 年出现的 unix 纪元问题?我读过这篇文章并且很想知道。

这显然与生产力有关,因为它距离太远,但我很好奇。

Pat*_*zek 9

如果您查看文档中的https://www.postgresql.org/docs/11/functions-datetime.html ,它会显示有关从纪元值to_timestamp返回值的函数的数据。timestamp with time zone完整描述为:“将 Unix 纪元(自 1970-01-01 00:00:00+00 以来的秒数)转换为时间戳”

该函数的输入类型是double precision

https://www.postgresql.org/docs/11/datatype-numeric.html您可以看到它double precision被定义为8 bytes15 位十进制数字精度。下面你可以读到:

双精度类型的范围通常约为 1E-307 到 1E+308,精度至少为 15 位。

所以1E+308几秒钟之后1970-01-01你就会在 2038 年之后走得很远......

事实上,如果您查看https://wiki.postgresql.org/wiki/TodoDone84,其中列出了 PostgreSQL 8.4 中已完成的所有功能,您可以看到:

已完成项目:扩展时区代码以允许 64 位值,以便我们可以表示 2038 年之后的年份