如何将特定格式日期时间转换为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
相关产品推荐
相关产品推荐

