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中文網其他相關文章!