SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
技術者募集中

MySQLのtimestamp型について

logo-mysql

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型として扱う事はできません。)

参考

http://dev.mysql.com/doc/refman/5.1/ja/timestamp-4-1.html

関連するメモ

コメント