mysql检查日期是否大于0000-00-00

时间:2017-11-05 17:55:45

标签: mysql sql date datetime

我希望我的orderedDate列(使用日期类型)不允许null或0000-00-00

我将orderedDate列设置为非null,但是在使用insert into

INSERT INTO Purchase(custName, price)
VALUES('Max Wong', 10.00)

订购日期是0000-00-00。我假设这是因为它没有给出其他值时是默认值。

我也试过

ALTER TABLE Purchase
ADD CHECK (orderedDate > '0000-00-00');

(还有orderedDate> 0000-00-00和orderedDate> 0)

我读了尝试

SET mysql_mode = 'NO_ZERO_DATE' 

但它不起作用。

我在网上看到了很多php建议,但我必须使用sql。

1 个答案:

答案 0 :(得分:2)

MySQL不支持CHECK约束。它解析它们,所以它不会抛出错误,但它不会保存或强制执行它们。

如果您启用NO_ZERO_DATE SQL模式,如果您使用0000-00-00,MySQL会发出警告,而不是错误。

如果启用NO_ZERO_DATE模式严格模式,则会出错。

此模式是从MySQL 5.7开始的默认模式。

有关详细信息:https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html