私は MySQL (完璧な人はいません) バージョン 4.1 を使用しており、次のようなタイムスタンプ列を定義するのに慣れています。
ALTER TABLE foo ADD creation TIMESTAMP DEFAULT NOW() ;
まったく同じことをしたいのですが、DATE フィールドの場合です。その理由は、TIMESTAMP の精度は必要なく、MySQL には関数インデックスが存在しないため、(時刻に関係なく) 特定の日付の行にすばやくアクセスできないからです。だから私は次のことを試しましたが、うまくいきません:
ALTER TABLE foo ADD creation_date DATE DEFAULT CURDATE() ;
ERROR 1067 (42000): Invalid default value for 'creation_date'
あるいは
ALTER TABLE foo ADD creation_date DATE DEFAULT DATE(NOW()) ;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(now())' at line 1
どちらも機能しません。
何か案は?