我需要在我的数据库上更改一些值。
我忘了将nullable设置为表,默认情况下设置为0000-00-00 00:00:00。
现在我需要在NULL
中转换该值。
字段类型是日期时间。
我该怎么做?
我尝试使用典型的Update table set field = NULL WHERE field = '0000-00-00 00:00:00';
,但它不起作用。
答案 0 :(得分:6)
您需要首先使列可以为空:
ALTER TABLE mytable MODIFY COLUMN field DATETIME NULL;
然后更新值:
UPDATE mytable SET field = NULL WHERE field = '0000-00-00 00:00:00';
答案 1 :(得分:2)
从MySQL 5.7开始,SQL模式NO_ZERO_DATE使得无法进行此更新,除非您首先禁用此限制(仅在事务期间)。
SET sql_mode=(SELECT REPLACE(@@sql_mode,"NO_ZERO_DATE", ""));
UPDATE mytable SET field = NULL WHERE field = '0000-00-00 00:00:00';
答案 2 :(得分:1)
您需要首先使该列为可空:
@ Mysql5.7
错误:
update episodes set `ending` = NULL WHERE `ending` = '0000-00-00'
正确:
update episodes set `ending` = NULL WHERE `ending` = 0000-00-00
注意:从where子句中的日期值中删除引号。希望它能帮助到某人
答案 3 :(得分:0)
不幸的是,这不起作用 for:
update episodes set `ending` = NULL
WHERE `ending` = '0000-00-00'
如果0000-00-00
在where子句中,则会收到错误:
“1292 - 日期时间值不正确:'结尾'列'''' 第1行“。
即使ending
在字段定义中有NULL
和defalut=null
。
答案 4 :(得分:0)
对我有用的是: