如何在PHP / MYSQL中更新NULL日期字段以使用0000-00-00?

时间:2017-12-02 04:34:49

标签: mysql

我正在尝试更新NULL的日期字段,以便在其中包含“0000-00-00”。我在尝试:

UPDATE `results` SET `date_of_birth` = '0000-00-00' WHERE `date_of_birth` IS NULL

但是当我模拟它时,它会显示0个匹配的记录。但是,如果我运行它,它会带回31条记录:

SELECT * FROM `results` WHERE `date_of_birth` IS NULL

似乎是矛盾的,或者我只是遗漏了一些东西。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

如果此列具有类型日期,则不能使用任何语句来更新不包含正确日期值的语句。

UPDATE `results` SET `date_of_birth` = '' WHERE `date_of_birth` = '' or cast(`date_of_birth` as date) is null or `date_of_birth` is null;

#With no strict mode.

UPDATE `results` SET `date_of_birth` = '0000-00-00' WHERE `date_of_birth` = '' or cast(`date_of_birth` as date) is null or `date_of_birth` is null;

答案 1 :(得分:0)

检查你的sql.mode

检查MYSQL模式

SELECT @@GLOBAL.sql_mode global, @@SESSION.sql_mode session
  

严格模式会影响服务器是否允许'0000-00-00'作为有效日期:如果未启用严格模式,则允许使用'0000-00-00'并且插入不会产生警告。如果启用了严格模式,则不允许使用'0000-00-00',并且插入会产生错误,除非同时给出了IGNORE。对于INSERT IGNORE和UPDATE IGNORE,允许使用'0000-00-00'并且插入会产生警告。

Refer