MySQLのtimestamp型について
MySQL4.0系列までのtimestamp型は内部的にはInteger型と同等で、2037年までしか使えないという問題がありましたが、その問題は MySQL4.1 以降で改善しました。
現在のtimestamp型は、内部的にはdatetime型と同等で、以下のように作動します。
テーブル定義例
CREATE TABLE test_table ( `id` int NOT NULL PRIMARY KEY, `last_datetime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) ENGINE=InnoDB;
上記のテーブル定義の場合のタイムスタンプの動作
- 特に何も指定しなければ
- データを追加、更新した際には現在日時が記録されます。
- last_datetime に NULL を登録しようとすると
- default値が登録されるので、現在日時が記録されます。
- update test_table set last_datetime = NOW(); も実行できます。
- 現在日時が入るだけです。
- update test_table set last_datetime = ‘2012-06-14 18:47:30’; も実行できます。
- 指定した日時が保存されます。
- 内部的には datetime 型と同等なので、
- datetime型に対して利用できる日付関連関数が、timestamp型にも使えます。
(Integer型として扱う事はできません。)
コメント