在MySQL中定义默认日期值,类似于时间戳

时间:2009-07-29 09:16:41

标签: mysql datetime mysql-error-1064 ddl mysql-error-1067

我正在使用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

哪个也不起作用。

任何想法?

1 个答案:

答案 0 :(得分:4)

在MySQL中,默认值必须是常量。 不允许使用函数或表达式。

异常是TIMESTAMP类型,CURRENT_TIMESTAMP是有效的非常量默认值。

See 4.1 manual: Data Type Default Values