なるようにしかならん

そういうことです

date、datetime、timestampの違い

「あれ?」っていつもなるので少しでも覚えられるように書いておく。

まぁ以下のリンクを見れば済む話ではあるのだが。
http://dev.mysql.com/doc/refman/4.1/ja/datetime.html
転写になるけどまとめておく。

  • DATETIME 型

・日付と時刻の両方の情報を昼用とするときに使用する
・形式は'YYYY-MM-DD HH:MM:SS'
・範囲は'1000-01-01 00:00:00' 〜 '9999-12-31 23:59:59'

  • DATE 型

・日付値のみ必要とし、時刻部分は必要でない場合に使用する
・形式は'YYYY-MM-DD'
・範囲は'1000-01-01' 〜 '9999-12-31'

  • TIMESTAMP 型

・insertまたはupdate操作に対して、現在の日付と時刻を自動的に指定することができる。TIMESTAMP型のカラムが複数ある場合は、最初のカラムのみが自動で更新される。
・形式は表示サイズによって異なる・・・だったんだけど4.1系以降では'YYYY-MM-DD HH:MM:SS'の形式となり、タイムスタンプ長のサポートは中止されている

・・・などなど。細かい話はやっぱり上のリンク見たほうがよさそう。特にTIMESTAMP型に関しては。
書いたのは4.1系の話になるので5系以降は変わってるところもあるかもです。

TIMESTAMP型の"最初のカラムが自動的に更新される"話は、createとupdateの日付をカラムに持つテーブル(順番も、create、update)で、それらのカラムにTIMESTAMP型を設定してたらupdateの方は全然更新されないでcreateだけが更新されてて・・・みたいな話を、そういえば聞いた事があったなぁと。
"自動更新"のところだけ頭に残ってると、そういうこともあり得ますね。気をつけないと。



プロフィール情報で誕生日とかを管理するならDATE型でいい気がする。
敢えてTIMESTAMPを使わずにDATETIMEで明示的にカラムを更新していくのも良い方法、とは書いてあったので、基本的には形式で使う型を決めていけば良さそう、かな。