我正在尝试更新其中的" 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
似乎是矛盾的,或者我只是缺少一些东西。
有什么想法?
您无法使用任何语句来更新此列,该语句如果此列具有类型日期,则不包含适当的日期值。
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;
检查您的sql.mode
检查MySQL模式
SELECT @@GLOBAL.sql_mode global, @@SESSION.sql_mode session
严格的模式会影响服务器是否允许'0000-00-00'作为有效日期:如果未启用严格模式,则允许'0000-00-00''''''''0000-00-00',并且插入不发出警告。如果启用了严格的模式,则不允许使用" 0000-00-00",并且插入物会产生错误,除非也忽略。插入物忽略和更新忽略,允许" 0000-00-00"并插入发出警告。
参考