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

如何解决向MySQL datetime字段插入自定义日期格式报错问题

解决MySQL datetime字段插入dd/mm/yyyy h:m格式数据的ERROR 1292问题

ERROR 1292 (22007) 是因为MySQL默认仅识别 YYYY-MM-DD HH:MM:SS 格式的datetime值,你输入的 dd/mm/yyyy h:m 格式不符合默认解析规则,以下是几种可行的解决办法:

方法一:插入时转换格式(推荐)

用STR_TO_DATE()函数将自定义格式的字符串转换为MySQL认可的datetime类型,示例插入语句:

INSERT INTO sport (`TIME`, 其他字段) 
VALUES (STR_TO_DATE('20/07/2024 19:15', '%d/%m/%Y %H:%i'), 对应字段值);

参数说明:

  • %d:两位数字的日(01-31)
  • %m:两位数字的月(01-12)
  • %Y:四位数字的年
  • %H:24小时制的小时(00-23)
  • %i:两位数字的分钟(00-59)

方法二:临时修改会话的日期解析规则

如果需要批量插入同格式数据,可以临时修改当前会话的日期格式配置,让MySQL自动解析你的输入格式:

-- 关闭严格模式(避免格式校验报错)
SET session sql_mode = '';
-- 设置会话级的日期、时间格式
SET session date_format = '%d/%m/%Y %H:%i';
SET session time_format = '%H:%i';

执行以上语句后,直接用原格式插入即可:

INSERT INTO sport (`TIME`, 其他字段) VALUES ('20/07/2024 19:15', 对应字段值);

注意:该配置仅对当前数据库连接会话有效,断开连接后会恢复默认设置。

方法三:全局修改日期格式(不推荐)

如果你的业务系统统一使用dd/mm/yyyy h:m格式,可以修改全局配置,但会影响所有数据库连接,需谨慎操作:

SET GLOBAL date_format = '%d/%m/%Y %H:%i';
SET GLOBAL time_format = '%H:%i';

修改后需要重启MySQL服务或重新建立连接才能生效,且后续所有会话都会使用该格式解析日期字符串。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 14:04:55