使用CURDATE()作为默认值时,在mysql中创建表失败

Gol*_*les 17 mysql phpmyadmin

我正在尝试使用phpmyadmin sql console创建下表:

CREATE TABLE dates
(
id int NOT NULL,
id_date datetime NOT NULL DEFAULT CURDATE(),
PRIMARY KEY (id)
)
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误: 替代文字

它以红色显示"CURDATE()",所以我猜这就是问题所在.

谁能帮到我这里?

Mar*_*ers 24

您不能使用CURDATE()作为默认值.

相反,您可以将TIMESTAMP列与DEFAULT CURRENT_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;
Run Code Online (Sandbox Code Playgroud)

结果:

id  id_date
1   2010-09-12

  • 我知道这已经很晚了,但是,w3schools.com的参考资料是错误的.我个人已多次尝试并确认其为假.另请参阅http://dev.mysql.com/doc/refman/5.5/en/create-table.html上的MySQL文档:DEFAULT子句指定列的默认值.除了一个例外,默认值必须是常量; 它不能是一个功能或表达.这意味着,例如,您不能将日期列的默认值设置为函数的值,例如NOW()或CURRENT_DATE. (2认同)