You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL 8.0.32插入特定时间报错,疑似Bug?

问题分析与结论

这不是MySQL的Bug,而是夏令时切换导致的无效时间戳问题,属于预期行为。

核心原因

Europe/Berlin(CET)时区在2011年3月27日执行夏令时切换:当地时间凌晨2点整,时钟会向前拨1小时,直接跳至3点。这意味着2011-03-27 02:17:04这个时间点在该时区下根本不存在,属于无效的本地时间。

验证逻辑

  • 插入2011-03-28 02:17:04成功:该时间是夏令时切换后的有效时间(此时已进入CEST时区,时间正常存在)。
  • 插入2011-03-27 02:17:04失败:MySQL会根据会话时区(此处为SYSTEM,即Europe/Berlin)验证时间有效性,对于不存在的时间点,无论SQL模式如何设置,都会触发1292错误——这不是格式错误,而是时间本身在当前时区无对应UTC时间。

解决方案建议

如果需要规避这类问题,可参考两种方式:

  • 改用UTC_TIMESTAMP()存储UTC时间,彻底避免时区切换带来的无效时间问题;
  • 将MySQL全局/会话时区设置为UTC(如执行SET GLOBAL time_zone = '+00:00';),统一以UTC标准处理时间数据。

内容的提问来源于stack exchange,提问作者merlin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 00:10:31