【发布时间】:2020-10-23 07:53:30
【问题描述】:
我运行的是MySql Server 5.7.11和这句话:
updated datetime NOT NULL DEFAULT '0000-00-00 00:00:00'
没有工作。给出错误:
ERROR 1067 (42000): Invalid default value for 'updated'
但是如下:
updated datetime NOT NULL DEFAULT '1000-01-01 00:00:00'
正常工作。
DATE 的情况相同。
作为一个旁注,在MySQL docs中提到:
DATE 类型用于具有日期部分但没有时间部分的值。 MySQL 以 'YYYY-MM-DD' 格式检索和显示 DATE 值。支持的范围是“1000-01-01”到“9999-12-31”。
即使他们也说:
无效的 DATE、DATETIME 或 TIMESTAMP 值将转换为相应类型的“零”值('0000-00-00' 或 '0000-00-00 00:00:00')。
还考虑到 MySQL 文档的第二个引用,谁能告诉我为什么它会给出这个错误?
【问题讨论】:
-
你为什么想要一个明显没有意义的默认值?如果日期未知,那么这正是
NULL的用途。 -
注意:这适用于 SQL Fiddle 的 5.6 版——sqlfiddle.com/#!9/02c98。
-
@Karlos 检查更新的答案。
-
@TomH 约会中的零在您看来毫无意义,这已经超出了许多读者的兴趣。显然,
NULL始终存在,因为它是0000-00-00 00:00:00。他们两个,在我看来是非常不同的。回答您的评论,也超出了这篇文章的范围,并确保完整的网站本身。
标签: mysql sql date datetime console