MYSQL 5.7 表 3 字段 日期时间 '0000-00-00 00:00:00'如何将新结构更改为默认空



MYSQL 5.7 表有 3 个字段,类型为 DATETIME '0000-00-00 00:00:00'当不是空时如何将新结构更改为默认空 + DATETIME 默认值设置为 '0000-00-00 00:00:00'。总共超过 190.00 条记录。

当对结构进行更改时,MYSQL看到有超过1个字段具有相同的问题,并且不会更改任何字段。 我该如何解决这个问题?

CREATE  TABLE  `customers1` ( 
`customers_id` int( 11  )  NOT  NULL ,
`customers_date_added` datetime DEFAULT  '0000-00-00 00:00:00',
`customers_dob` datetime NOT  NULL DEFAULT  '0000-00-00 00:00:00',
`customers_last_modified` datetime DEFAULT  '0000-00-00 00:00:00',
`customers_active` tinyint( 1  ) DEFAULT  '1'
) ENGINE  = InnoDB  DEFAULT CHARSET  = utf8
ALTER TABLE `customers1` CHANGE  `customers_date_added` `customers_date_added` datetime NULL ;

我希望并且需要将这些日期时间字段更正为 NULL,而不是"0000-00-00 00:00:00"。 我发现的问题是,就我而言,这种旧设置有超过 1 个日期时间字段。

您需要单独更新行,不能对它使用ALTER TABLE命令。ALTER TABLE命令可以添加具有NULL值的新行,但如果没有必要,则不会更改行。

ALTER TABLE `customers1` 
CHANGE `customers_date_added` `customers_date_added` datetime NULL,
CHANGE `customers_dob` `customers_dob` datetime NULL,
CHANGE `customers_last_modified` `customers_last_modified` datetime NULL;
UPDATE `customers1`
SET `customers_date_added` = NULLIF(`customers_date_added`, '0000-00-00 00:00:00'), 
`customers_dob` = NULLIF(`customers_dob`, '0000-00-00 00:00:00'),
`customers_last_modified` = NULLIF(`customers_last_modified`, '0000-00-00 00:00:00');

在这里,我们在一个语句中更改所有错误的列,然后用另一个语句更新所有三列中的所有0000-00-00 00:00:00值。

另请参阅: NULLIF((

最新更新