🐬

mysqlにおけるtimestamp型2038年問題

2022/01/01に公開

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ビットとして保存されているからです。

解決策

参考

https://en.wikipedia.org/wiki/Year_2038_problem
https://stackoverflow.com/questions/2012589/php-mysql-year-2038-bug-what-is-it-how-to-solve-it

Discussion