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

MySQL使用STR_TO_DATE时报Truncated incorrect datetime value错误如何解决

MySQL STR_TO_DATE转换含AM/PM的时间字符串报错解决方案

错误原因

你使用的格式串与输入字符串内容不匹配:输入字符串末尾包含12小时制的上午/下午标识PM,但你编写的格式串%m/%d/%Y %h:%i中没有对应的占位符匹配该部分内容,MySQL解析时无法处理多余的PM字符,因此抛出截断错误。

修复方法

在格式串末尾添加%p占位符匹配AM/PM标识即可,修正后的SQL语句如下:

update userdata set validity_start_date=STR_TO_DATE('10/29/2015 2:12 PM','%m/%d/%Y %h:%i %p');

注意事项

  • 若你的MySQL运行环境lc_time_names变量为非英文区域配置,会无法识别英文的AM/PM标识,可先执行会话级配置修改再跑更新语句:SET lc_time_names = 'en_US';,更新完成后可自行恢复原有配置。
  • %p搭配%h(12小时制小时占位符)使用时,MySQL会自动将PM时段的时间转换为24小时制的数值存储,比如示例中的2:12 PM会正确转换为14:12,无需手动换算。
  • 批量更新数据前,建议先执行查询语句验证转换结果是否符合预期,避免数据写入错误:
SELECT STR_TO_DATE(你的时间字段名,'%m/%d/%Y %h:%i %p') AS convert_result FROM userdata LIMIT 10;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 09:06:05