MYSQL 5.7表3字段DATETIME'0000-00-00 00:00:00'如何将新结构更改为DEFAULT NULL

罗纳达通林

MYSQL 5.7表具有3个类型为DATETIME'0000-00-00 00:00:00'的字段,当NOT NULL + DATETIME默认设置为'0000-00-00 00:00:00'时,如何将新结构更改为DEFAULT NULL。总共超过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()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何解析0000-00-00 00:00:00?

使用PGLoader MySQL将Postgres的NULL和'0000-00-00 00:00:00'转换为非NULL

mysql datetime在mysql版本5.6中变为0000-00-00 00:00:00

Mysql:将0000-00-00设置为null

如何将字段的默认值设置为“ 0000-00-00 00:00:00”?

当DateTime设置为0000-00-00 00:00:00时,MySQL选择MIN DateTime

在Mysql数据库中将0000-00-00 00:00:00插入到DateTime

MySQL导入将时间戳的空值转换为0000-00-00 00:00:00

将 PHP DateTimeInterface 保存到 MySQL 结果为 0000-00-00 00:00:00

MySQL - 如何选择日期时间字段不等于 0000-00-00 00:00:00 的行?

如何在PHP中正确设置“ 0000-00-00 00:00:00”作为DateTime

如何在Python中初始化datetime 0000-00-00 00:00:00?

如何将具有0000-00-00 00:00:00值的日期时间设置为NULL?

0000-00-00 00:00:00在时间戳

你如何在 PHP/MYSQL 中将 NULL 日期字段更新为 0000-00-00?

PostgreSQL中更换 “0000-00-00 00:00:00” 为NULL

如何将时间“0000-00-00 00:00:00”设置为LocalDateTime?

MySQL不正确的日期时间值:“ 0000-00-00 00:00:00”

不正确的DateTime值'0000-00-00 00:00:00'-Date_Sub()在

为什么 SQL 会将表中的日期更新为 0000-00-00 00:00:00?

如何在格式为'0000-00-00T00:00:00 + 00:00'的字符串上使用datetime.strptime?

无法将'0000-00-00 00:00:00'转换为TIMESTAMP

无法将DateTimeField的默认值设置为“ 0000-00-00 00:00:00”

如何使用javascript获取当前时间为00/00/0000 00:00:00

如何在python中使用strftime()格式化'0000-00-00 00:00:00'?

MySQL Workbench-表数据导入向导将所有日期时间对象编写为0000-00-00 00:00:00

00:00:00 DateTime.ToString变为12:00:00

Hibernate在时间'00:00:00'返回null

为什么将“ 0000:00:00 00:00:00”解析为日期返回-0001-11-28T00:00:00Z?