首页 > 解决方案 > 如何将日期时间值从 0000-00-00 00:00:00 值更新为 null

问题描述

亲爱的先生有一个表,我在其中使用 datetime 数据类型的列 updatetime 并且默认情况下它为空。现在,当我尝试在 phpmyadmin 中执行更新查询时,我想将一些值从 0000-00-00 00:00:0 替换为 null,它会在此处输入图像描述。请帮助我如何更新此列。`

UPDATE tbl_table_time
set update_datetime = NULL
WHERE update_datetime = '0000-00-00 00:00:00'

ID  Updatetime (Datatype datetime)
1   0000-00-00 00:00:00

2   2020-12-03 16:19:07

3   0000-00-00 00:00:00

4   2020-12-03 16:19:07

5   0000-00-00 00:00:00

6   0000-00-00 00:00:00

7   0000-00-00 00:00:00


标签: mysql

解决方案


问题不在于您的查询,SET update_datetime = NULL而是WHERE update_datetime = '0000-00-00 00:00:00'在于您的查询。该错误表明,这0000-00-00 00:00:00不是有效的Datetime,这是正确的,因为最低的Datetime1000-01-01 00:00:00。因此 MySQL 不想比较Datetime值。要克服这个问题,最简单的方法是将Datetime转换为实际字符串以进行比较。这是一个示例查询:

UPDATE tbl_table_time SET update_datetime = NULL WHERE CAST(update_datetime AS CHAR(20)) = '0000-00-00 00:00:00'

请记住,这不是很有效,并且在大型数据库上可能需要一段时间。作为0000-00-00 00:00:00一个错误状态,应该避免它,你应该检查它是如何在数据库中结束的。MySQL 会自动将无效的日期时间转换为这种零状态,但这也可以禁用。有关更多详细信息,请参阅https://dev.mysql.com/doc/refman/8.0/en/datetime.html


推荐阅读