使用CURDATE()作为默认值时,在mysql中创建表失败
我正在尝试使用phpmyadmin sql控制台创建下表:使用CURDATE()作为默认值时,在mysql中创建表失败,mysql,phpmyadmin,Mysql,Phpmyadmin,我正在尝试使用phpmyadmin sql控制台创建下表: CREATE TABLE dates ( id int NOT NULL, id_date datetime NOT NULL DEFAULT CURDATE(), PRIMARY KEY (id) ) 但是,我得到以下错误: 它以红色显示“CURDATE()”,所以我想这就是问题所在 有人能帮我吗?您不能使用CURDATE()作为默认值 相反,您可以使用带有默认当前时间戳的时间戳列。那么你就得忽略它的时间部分 示例SQL代码: C
CREATE TABLE dates
(
id int NOT NULL,
id_date datetime NOT NULL DEFAULT CURDATE(),
PRIMARY KEY (id)
)
但是,我得到以下错误:
它以红色显示“CURDATE()”,所以我想这就是问题所在
有人能帮我吗?您不能使用CURDATE()作为默认值
相反,您可以使用带有默认当前时间戳的时间戳列。那么你就得忽略它的时间部分
示例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
身份证日期
1 2010-09-12
id\u date
应该是date
还是datetime
?您命名和使用它的方式更像是日期
,但它被声明为日期时间
。我认为如果它是日期时间,正确的函数应该是NOW(),对吗?我仍然认为它对NOW()不起作用,保持DATETIMENOW()也不起作用。你能给我看一些SQL代码作为例子吗?我非常感谢,因为我的SQL经验非常有限。我知道这已经很晚了,但是w3schools.com的参考是不正确的。我个人已经尝试过很多次,并确认它是错误的。同样来自MySQL文档:DEFAULT子句为列指定默认值。除了一个例外,默认值必须是常量;它不能是函数或表达式。例如,这意味着您不能将日期列的默认值设置为函数的值,例如NOW()或CURRENT_date。如果您尝试类似的操作,则以下操作有效。。奇怪。。我认为这是一个产品错误创建表employee(hire_date timestamp NOT NULL DEFAULT now());