【问题标题】:Incorrect datetime value in MySQL 8 - How to fix? [duplicate]MySQL 8 中的日期时间值不正确 - 如何修复? [复制]
【发布时间】: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


【解决方案1】:

请将 created_at 数据类型更改为created_at datetime DEFAULT NULL

然后尝试插入值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-19
    • 2017-07-18
    相关资源
    最近更新 更多