【发布时间】:2017-11-05 17:55:45
【问题描述】:
我希望我的 orderedDate 列 (使用日期类型) 不允许 null 或 0000-00-00
我已将orderedDate 列设置为非空,但在使用插入时
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。
【问题讨论】:
-
如果是我 .. 我会运行一个查询,用“标准”日期替换所有零日期 .. 甚至早于您的业务。例如
1970-01-01...然后您应该将该列标记为默认CURRENT_TIMESTAMP或类似的东西。完成后..您可以简单地使用WHERE date BETWEEN DATE(NOW()) AND DATE(1970-01-01) -
您可能想了解如何在 MySQL 中使用触发器作为检查约束:stackoverflow.com/questions/9734920/…