gpt4 book ai didi

MySQL 更新所有行以将时间添加到时间戳给出 : "Column ' start' cannot be null"

转载 作者:行者123 更新时间:2023-11-29 06:02:30 24 4
gpt4 key购买 nike

我有一个表,其中包含一个名为“start_date”的列,它是一个日期时间,不能为空。我想在一个更新查询中为所有日期时间添加一个小时,但它给了我错误消息 Column 'start_date' cannot be null

我正在使用 MySQL 5.7.17 和以下查询:

UPDATE tbl_event SET start_date = DATE_ADD(start_date, INTERVAL 1 HOUR);

当我在一行上执行时它工作正常,但当我想更改所有时就不行了。我在这里遗漏了什么吗?

编辑:这是表的创建语法:

CREATE TABLE `tbl_event` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`created_by` int(11) DEFAULT NULL,
`name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`start_date` datetime NOT NULL,
`end_date` datetime NOT NULL,
PRIMARY KEY (`id`),
KEY `FK_EVENT_CREATED_BY` (`created_by`),
CONSTRAINT `FK_EVENT_CREATED_BY` FOREIGN KEY (`created_by`) REFERENCES `tbl_user` (`id`) ON DELETE SET NULL,
) ENGINE=InnoDB AUTO_INCREMENT=442 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

最佳答案

除非发生非常奇怪的事情,否则我认为唯一可能导致问题的是 start_date 中至少有一个(非 NULL)值,其中添加一个小时可能产生 NULL。

例如,可能存在一个值可以将结果推到有效的 datetime 范围内;我认为这会在某些 MySQL 版本中重现您的问题。

(正如您现在在评论中明确指出的那样,并且正如 GhostGambler 所建议的那样,这些值是旧的 MySQL“零日期”(0000-00-00 00:00:00)表现出一些奇怪的行为,包括从 DATE_ADD 产生一个 NULL。)

您可以找到导致问题的值的行:

SELECT * FROM tbl_event WHERE DATE_ADD(start_date, INTERVAL 1 HOUR) IS NULL;

...然后根据您的发现采取行动来更正数据或查询。

关于MySQL 更新所有行以将时间添加到时间戳给出 : "Column ' start' cannot be null",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43916036/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com