在使用CURDATE()作为默认值时,在MySQL中创建表失败。
在MySQL中使用CURDATE()作为默认值是不允许的。相反,可以使用带有DEFAULT CURRENT_TIMESTAMP的TIMESTAMP列。然后需要忽略其中的时间部分。
例如SQL代码如下:
CREATE TABLE dates ( id int NOT NULL, id_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id) ); INSERT INTO dates (id) VALUES (1); SELECT id, DATE(id_date) AS id_date FROM dates;
结果如下:
id id_date
1 2010-09-12
我知道这有点晚了,但是是的,w3schools.com的参考是错误的。我个人尝试了很多次,并确认它是错误的。此外,在MySQL文档的dev.mysql.com/doc/refman/5.5/en/create-table.html中也有说明:DEFAULT子句指定列的默认值。除了一个例外外,默认值必须是一个常量;它不能是一个函数或表达式的值。这意味着,例如,不能将日期列的默认值设置为函数NOW()或CURRENT_DATE的值。
有人尝试了类似的东西,下面的代码可以正常工作...很奇怪...我认为这是一个产品错误:
CREATE TABLE employee ( hire_date timestamp NOT NULL DEFAULT now() );