by shigemk2

当面は技術的なことしか書かない

DATETIME、DATE、TIMESTAMP 型

MySQL :: MySQL 4.1 リファレンスマニュアル :: 6.2.2.2 DATETIME、DATE、TIMESTAMP 型

型名 DATETIME DATE
表示形式 'YYYY-MM-DD HH:MM:SS' 'YYYY-MM-DD'
サポート範囲 '1000-01-01 00:00:00'〜'9999-12-31 23:59:59 '1000-01-01'〜'9999-12-31'

サポート範囲を越えた値を入力しても、期待通りに作動するかどうかは分からない。

また、MySQL を MAXDB モードで実行している場合、
TIMESTAMP は DATETIME と同じように動作し、
TIMESTAMP カラムの自動更新は行われない。

MySQL の MAXDB モードでの実行は、バージョン 4.1.1 以降で可能となる。

MAXDB モードで実行していないときの TIMESTAMP の動作
TIMESTAMP カラム型では、INSERT または UPDATE 操作に対して現在の日付と時刻を自動的に指定することができる。
TIMESTAMP カラムが複数ある場合は、最初のカラムのみが自動で更新される。

また、日 00-31、月 00-12、年 1000-9999 の有効性に関する
基本チェックのみ実行される。
この範囲外の日付はすべて 0000-00-00 に戻される。
この場合、2002-04-31 のような誤った日付も格納可能であることに注意する。

そのため、04-31をチェックする処理はアプリケーション側で行わなければならない。

ただし、格納するデータの区切りについてはある程度ゆるく、
20111212も2011-12-12も111212も問題なく2011-12-12としてテーブルに格納される。
(一応00-69は21世紀、70-99は20世紀として処理される)