2009-07-29 55 views
2

我使用MySQL(沒有人是完美的),4.1版,我用來定義這樣的一些時間戳列:定義在My​​SQL中默認的日期值,類似於時間戳

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 

這也不起作用。

任何想法?

回答

4

在MySQL中,默認值必須是不變的。 函數或表達式是不允許的。

異常是TIMESTAMP類型,對此,CURRENT_TIMESTAMP是有效的非常量默認值。

See 4.1 manual: Data Type Default Values

+0

哼哼,所以有4.1沒有純粹的MySQL解決方案? – jeje 2009-07-29 09:45:57