2016-08-22 2 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' '行1の「my_datetime」

しかし、値を選択しようとすると結果が得られます。

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

どのように私の間違った値をNULLに更新できますか?

+0

'値は「0000-00-00 00:00:00」です。「簡単なサポートされる年は1000です」(http://dev.mysql.com/doc) /refman/5.7/en/datetime.html)。 –

+0

はい、問題は、このフォーマットが今の私のテーブルにあるということです。だから私はそれを修正する必要がありますが、私は方法を知らないのです。 – goldlife

+0

Hmmm ... 'SELECT MIN(my_datetime)FROM my_table'は何を表示しますか? –

答えて

1

MYSql 5.7が非常に厳しいため、ALLOW_INVALID_DATES、 で可能です。

SET sql_mode = 'ALLOW_INVALID_DATES'; 
UPDATE my_table 
SET my_datetime = NULL 
WHERE my_datetime = '0000-00-00 00:00:00'; 
関連する問題