MySQL中STR_TO_DATE函数使用报错,求正确语法生成指定时间戳
解决MySQL STR_TO_DATE函数的语法错误与日期格式匹配问题
在使用MySQL的STR_TO_DATE函数解析字符串011122143859为日期时间(期望结果2022-11-01 14:38:59)时,执行以下语句触发1064语法错误:
SELECT STR_TO_DATE('011122143859',%d%c%Y%l%i%S);
错误原因
- 格式参数未加单引号:MySQL要求
STR_TO_DATE的第二个格式参数必须是字符串类型,必须用单引号包裹,原语句直接写%d%c%Y%l%i%S会被判定为非法语法,触发1064错误。 - 格式符与输入字符串不匹配:原格式符无法对应输入的字符段:
- 输入中月份是
11(带前导零),原用%c(不带前导零的月份),应替换为%m(带前导零的月份); - 输入中年份是
22(2位),原用%Y(4位年份),应替换为%y(2位年份,自动映射到2000-2099区间); - 输入中小时是
14(24小时制),原用%l(12小时制小时),应替换为%H(24小时制小时)。
- 输入中月份是
正确解法
使用匹配的格式符并包裹单引号,执行以下语句即可得到期望的日期时间:
SELECT STR_TO_DATE('011122143859','%d%m%y%H%i%S');
执行结果:2022-11-01 14:38:59
内容的提问来源于stack exchange,提问作者Pathi
相关产品推荐
相关产品推荐

