🐬
mysqlにおけるtimestamp型2038年問題
mysqlのtimestamp型における、2038年問題についてまとめました。
2038年問題とは何か?
2038年問題(Y2K問題と同様にUnix Millennium Bug、Y2K38とも呼ばれます)により、一部のコンピュータソフトウェアが2038年以前または2038年に故障する可能性がある問題です。
MySQLのTIMESTAMP型
では、保持できる最大値が「2038-01-09 03:14:07(UTC)
」です。
発生するとどうなるのか?
2038年1月19日火曜日の「2038-01-19 03:14:07UTC
」を超える時間は「wrap around」し、負の数として内部に保存されます。
その結果、2038年ではなく「1901-12-13 03:14:07UTC
」の時間として解釈します。
この問題は、システム時間を符号付き32ビット
として保存されているからです。
解決策
- 時間情報が必要の無い場合
-
DATE
型を使用する。
-
- 時間情報が必要な場合
-
DATETIME
型を使用する。 -
INT
型でUNIXタイムスタンプを管理。
https://qiita.com/juve_534/items/a9f9f72d49f8817951e8
-
参考
Discussion