【问题标题】:MySQL - Select and Update existing wrong 0 Values (0000-00-00 00:00:00) to Correct DateTime ValuesMySQL - 选择并更新现有的错误 0 值 (0000-00-00 00:00:00) 以更正 DateTime 值
【发布时间】:2016-08-22 15:17:18
【问题描述】:

现有“日期时间”列的日期时间值不正确。

值为“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?

【问题讨论】:

  • Values are "0000-00-00 00:00:00". ...不容易,因为smallest supported year is 1000
  • 是的,问题是这种格式现在在我的表中......所以我必须更正它,但我不知道如何。
  • 嗯...SELECT MIN(my_datetime) FROM my_table 向您展示了什么?
  • 我得到了“0000-00-00 00:00:00”。

标签: php mysql datetime


【解决方案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';

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-03
    • 2016-06-04
    • 1970-01-01
    • 1970-01-01
    • 2011-06-27
    • 1970-01-01
    相关资源
    最近更新 更多