2016-08-22 37 views
0

存在具有不正確DateTime值的現有「DateTime」列。MySQL - 選擇並更新現有的錯誤0值(0000-00-00 00:00:00)更正日期時間值

值爲「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' 

SO我怎麼能更新所有我的錯值爲null?

+0

'值是「0000-00-00 00:00:00」.' ...不容易,因爲[支持的最小年份是1000](http://dev.mysql.com/doc /refman/5.7/en/datetime.html)。 –

+0

是的問題是,這種格式現在在我的表...所以我必須糾正它,但我不知道如何。 – goldlife

+0

嗯...... SELECT MIN(my_datetime)FROM my_table'顯示了什麼? –

回答

1

它可能與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';