2038 年错误:它是什么以及如何解决
2038 年问题是什么?
2038 年问题会影响将日期存储为32 位有符号整数,表示自 1970 年 1 月 1 日 00:00:00 UTC 以来的秒数。当计数器在 2038 年 1 月 19 日 03:14:07 UTC 超过其最大值 (2,147,483,647) 时,它将“环绕”为负数,导致错误
为什么以及何时发生?
此问题的出现是由于 32 位整数表示各种日期的容量有限。当计数器达到最大值时,它将多余的时间解释为 1901 年 12 月 13 日的日期。
如何解决 2038 年问题
使用长数据类型:
升级您的软件以使用 64 位整数数据类型来表示日期存储,提供显着扩展的时间范围。
MySQL 特定解决方案:
TIMESTAMP 的替代品
在数据库中,考虑使用64 位数据类型(例如,GNU C 中的 long long)或 PHP 中的 BCmath 扩展用于存储日期。
减轻现有应用程序中的风险
避免以下问题使用 TIMESTAMP 的现有应用程序:
潜在的破坏性用例
即使在 2038 年之前,系统存储未来日期(例如出生日期、长期抵押贷款)可能会遇到错误,因为 TIMESTAMP 仅涵盖范围1970-2038。
更多信息资源:
以上是2038 年问题:我们如何防止技术时间扭曲?的详细内容。更多信息请关注PHP中文网其他相关文章!