コード日進月歩

しんくうの技術的な小話、メモ、つれづれ、など

MySQLのtimestamp型は2038年問題があるが、datetime型は9999年まで可能。

MySQLってどれぐらい先まで設定できるんだっけ?」という議論が起こるのでメモ

ドキュメント曰く

DATETIME または TIMESTAMP 値には、マイクロ秒 (6 桁) までの精度で後続の小数秒部分を含めることができます。特に、MySQL 5.6.4 以降では、DATETIME または TIMESTAMP カラムに挿入された値の小数部はすべて破棄されずに格納されます。小数部が含まれる場合、これらの値の形式は 'YYYY-MM-DD HH:MM:SS[.fraction]' であり、DATETIME 値の範囲は '1000-01-01 00:00:00.000000' から '9999-12-31 23:59:59.999999' であり、TIMESTAMP 値の範囲は '1970-01-01 00:00:01.000000' から '2038-01-19 03:14:07.999999' です。 - MySQL :: MySQL 5.6 リファレンスマニュアル :: 11.3.1 DATE、DATETIME、および TIMESTAMP 型

ざっと年観点でまとめると

  • TIMESTAMPは西暦1970年から2038年まで
  • DATETIMEは西暦1000年から9999年まで

参考リンク