您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

PHP和mySQL:2038年Bug:这是什么?怎么解决呢?

PHP和mySQL:2038年Bug:这是什么?怎么解决呢?

我已将其标记为社区Wiki,因此随时可以编辑。

“ 2038年的问题(也称为Unix Millennium Bug,类似于Y2K问题的Y2K38)可能会导致某些计算机软件在2038年之前或之内发生故障。该问题影响所有将系统时间存储为带符号32的软件和系统。位整数,并将其解释为自1970年1月1日00:00:00 UTC以来的秒数。”

超越时代 将“环绕”并为负数,这些系统将在1901年12月13日,解释为一个时间,而不是在2038年内部存储这是由于自UNIX时代(1970年1月1日00:00:00 GMT)以来的秒数将超过计算机的32位带符号整数的最大值的事实。

尝试使用大类型在数据库中存储日期:64位就足够了-GNU C和POSIX / SuS或sprintf('%u'...)PHP或BCmath扩展名中的long long类型。

因此,MysqLDATETIME的范围为1000-9999,而TIMESTAMP的范围仅为1970-2038。如果您的系统存储了出生日期,将来的远期日期(例如30年的抵押贷款)或类似的日期,那么您已经遇到了这个错误。同样,如果这将成为问题,请不要使用TIMESTAMP。

在2038年,仍然很少有PHP应用程序出现,尽管人们很难预见到Web仍不是旧平台。

这是更改数据库表列以转换TIMESTAMP为的过程DATETIME。首先创建一个临时列:

php 2022/1/1 18:21:13 有540人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶