MySQL - 选择并更新现有错误的0值(0000-00-0000:00:00)以更正日期时间值

时间:2016-08-22 15:17:18

标签: php mysql datetime

现有" DateTime"具有不正确的DateTime值的列。

值为" 0000-00-00 00:00:00"。

因此,我以这种方式改变我的桌子:

ALTER TABLE `my_table` MODIFY `my_datetime` DATETIME DEFAULT NULL;

现在我想将错误的值更新为NULL。

但是这个查询不起作用:

UPDATE `my_table`
SET `my_datetime` = NULL
WHERE `my_datetime` = '0000-00-00 00:00:00'

我收到此错误消息:

  

日期时间值不正确:' 0000-00-00 00:00:00'对于专栏   ' my_datetime'在第1行

但如果我尝试选择值,我会得到一个结果。

SELECT * FROM `my_table`
WHERE `my_datetime` = '0000-00-00 00:00:00'

那我该如何将所有错误的值更新为NULL?

1 个答案:

答案 0 :(得分:2)

可以使用ALLOW_INVALID_DATES, 因为Mysql 5.7非常严格。

SET sql_mode = 'ALLOW_INVALID_DATES';
UPDATE my_table
SET my_datetime = NULL 
WHERE my_datetime = '0000-00-00 00:00:00';