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

如何将特定格式日期时间转换为MySQL datetime格式

最简MySQL日期格式转换方案

嘿,这事儿用MySQL自带的STR_TO_DATE()函数就能一步搞定,绝对是最简洁的解法,完全不用自己写substr或者switch逻辑!

核心思路

MySQL的STR_TO_DATE()函数可以直接按照指定的格式解析字符串,自动帮你完成月份缩写转数字、12小时制转24小时制的工作,还能自动忽略掉不需要的毫秒部分。

具体用法

先给你看实际的SQL示例:

-- 测试转换单个字符串
SELECT STR_TO_DATE(TRIM(' Apr 25 2018 03:28:14:000PM '), '%b %d %Y %h:%i:%s:%f%p') AS formatted_datetime;

执行这个查询会直接返回你想要的结果:2018-04-25 15:28:14。

这里的格式符对应原字符串的各个部分,含义如下:

  • %b:匹配月份缩写(比如Apr、Jan)
  • %d:匹配两位数字的日期(不足两位会自动补零)
  • %Y:匹配四位数字的年份
  • %h:匹配12小时制的小时(01-12)
  • %i:匹配两位数字的分钟
  • %s:匹配两位数字的秒
  • %f:匹配毫秒部分(转换后会自动忽略,因为MySQL的datetime类型不存储毫秒)
  • %p:匹配AM/PM标记,自动转换为24小时制

另外用TRIM()是因为你的原字符串前后有多余空格,先去掉能避免解析出错。

插入表时的用法

如果要直接插入到MySQL的datetime字段里,直接把这个函数套在INSERT语句里就行:

INSERT INTO your_table (your_datetime_column)
VALUES (STR_TO_DATE(TRIM(' Apr 25 2018 03:28:14:000PM '), '%b %d %Y %h:%i:%s:%f%p'));

这种方法比手动拆分字符串或者写月份映射逻辑简洁太多,而且MySQL内置函数处理各种边缘情况(比如单个数字的日期、不同月份缩写)都更可靠。

内容的提问来源于stack exchange,提问作者François Macchi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:22:42