MySQLのtimestampとdatetimeの違いは?
timestampというのは、 作成日時とか、更新日時とか自動で入れる日時系によく使われますよね。
一方で、datetimeというものもあって、これの違いってなんだろう? と思ったので調べてみました。
結論としては、その取れるあたいの幅が違うようです。
公式ドキュメント によると、
The DATE type is used for values with a date part but no time part. MySQL retrieves and displays DATE values in 'YYYY-MM-DD' format. The supported range is '1000-01-01' to '9999-12-31'.
The DATETIME type is used for values that contain both date and time parts. MySQL retrieves and displays DATETIME values in 'YYYY-MM-DD HH:MM:SS' format. The supported range is '1000-01-01 00:00:00' to '9999-12-31 23:59:59'.
The TIMESTAMP data type is used for values that contain both date and time parts. TIMESTAMP has a range of '1970-01-01 00:00:01' UTC to '2038-01-19 03:14:07' UTC.
とのこと。
つまり、dateは日時だけで、datetimeは秒まで(正確にはより細かいマイクロ秒とかも)持つことができますが、日時の範囲は、 1000年の1月1日
〜 9999年の12月31日
まで取りうるようです。
一方で、timestampは、 1970年1月1日
〜 2038年1月19日
までとのこと。
結構現実的に運用している時期を想定しているということでしょうか。
より詳しいことは公式ドキュメントでどうぞ!