【发布时间】:2020-05-08 15:34:55
【问题描述】:
INSERT INTO `projects` (`name`, `created_at`) VALUES ('test', '2015-01-21 04:09:46');
INSERT INTO `projects` (`name`, `created_at`) VALUES ('test', '2016-03-27 01:29:59');
第一个查询运行良好,第二个查询出现错误:查询中的错误 (1292):不正确的日期时间值:第 1 行的列 'created_at' 的日期时间值不正确
sql_mode 是:
STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
桌子:
DROP TABLE IF EXISTS `projects`;
CREATE TABLE `projects` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
`created_at` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
MySQL 版本:8.0.19
【问题讨论】:
-
您决定隐藏的表格中的那些位,可能是相关的
-
由于您的个人资料显示您来自葡萄牙,因此
2016-03-27上的时钟从01:00:00调快到02:00:00(夏令时),因此01:29:59不存在那个日期。 -
在我的系统上,它实际上创建了一个时间为 02:00:00 的行它在你的系统上这样做吗
-
@tkausl 谢谢。我的 system_time_zone:WEST 和 time_zone:SYSTEM。我该如何解决?
-
您可以通过不输入无效时间来修复它,或者存储 UTC 时间而不是观察夏令时变化的时间
标签: mysql