mysql:无法修改或更新日期值 0000-00-00 的列

Gab*_*ann 2 mysql

我有两个问题:

  1. 为什么0000-00-00在表定义中将其设置为非空时插入错误日期时,mysql 无法通知错误..?

示例架构:这里

现在,如果将截止日期更改为1970-01-01它会显示错误

0000-00-00第 1 行的 Duedate 列的日期值不正确

update my_list set duedate = '1970-01-01' where duedate = '0000-00-00';
Run Code Online (Sandbox Code Playgroud)

我试图修改该列,但它仍然显示相同的错误

ALTER TABLE `my_list` modify `duedate` date NULL;
ALTER TABLE  `my_list` MODIFY  `duedate` DATE NOT NULL DEFAULT '1970-01-01';
Run Code Online (Sandbox Code Playgroud)
  1. 如何将截止日期更改为1970-01-01for 0000-00-00

我从客户端获得了数据库,所以不幸的是在 my.cnf 文件上工作。

更多信息:

MYSQL 版本:5.5

编辑:这是有效的

update my_list set duedate = '1970-01-01' where id = 16; 
Run Code Online (Sandbox Code Playgroud)

但不是

update my_list set duedate = '1970-01-01' where duedate = '0000-00-00';
Run Code Online (Sandbox Code Playgroud)

小智 8

将截止日期转换为字符串:

update my_list set duedate = '1970-01-01' where DATE_FORMAT(duedate, '%Y-%m-%d') = '0000-00-00';
Run Code Online (Sandbox Code Playgroud)