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

MySQL TIMESTAMP类型最小可插入值及插入报错问题咨询

MySQL TIMESTAMP插入最小值报错的原因及解决方案

报错核心原因:时区转换导致值越界

MySQL的TIMESTAMP类型会自动将本地时区的时间转换为UTC存储,查询时再转回本地时区。文档中标注的TIMESTAMP范围是UTC时间的1970-01-01 00:00:01到2038-01-19 03:14:07,但如果你插入的是本地时区的1970-01-01 00:00:01,当本地时区比UTC早(比如东八区UTC+8),转换后的UTC时间会是1969-12-31 16:00:01——这个值低于TIMESTAMP的UTC最小值,因此触发#1292 - Incorrect datetime value错误。

可正常插入的最小本地时间计算方法

最小可插入的本地时间需要满足:转换为UTC后等于TIMESTAMP的UTC最小值1970-01-01 00:00:01。计算公式为:

最小本地时间 = UTC最小值 + 本地时区与UTC的偏移量

举两个实际例子:

  • 若服务器时区为东八区(UTC+8),最小可插入的本地时间为1970-01-01 08:00:01
  • 若服务器时区为西五区(UTC-5),最小可插入的本地时间为1969-12-31 19:00:01

你可以通过以下SQL命令查看当前数据库的时区配置:

SELECT @@time_zone, @@system_time_zone;

直接插入UTC最小值的解决方案

如果需要插入UTC标准的1970-01-01 00:00:01,可以临时将会话时区设置为UTC后再执行插入:

SET time_zone = '+00:00';
INSERT INTO your_table (order_date) VALUES ('1970-01-01 00:00:01');

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 13:15:19