如何在MySQL中将‘202109’格式的字符串转换为‘2021-09’格式
错误原因说明
STR_TO_DATE函数的第二个参数是输入字符串的匹配格式,你输入的'202109'是无分隔符的%Y%m格式,传入'%Y-%m'和输入串匹配不上,自然解析失败。- MySQL原生的
DATE()函数仅支持1个日期参数,你传入2个参数本身就属于语法错误,执行必然报错。
正确实现方案
方案1:日期类型转换方案(适合需要后续做日期计算的场景)
先用STR_TO_DATE把输入串解析为合法日期,再用DATE_FORMAT按目标格式输出即可,写法如下:
SELECT DATE_FORMAT(STR_TO_DATE('202109', '%Y%m'), '%Y-%m');
注:STR_TO_DATE解析只有年月的串时会自动补全当月1号作为日期部分,不会影响最终年月的格式化结果
方案2:纯字符串拼接方案(适合仅做格式转换的场景)
不需要转日期类型,直接截取字符串拼接分隔符即可,性能更高:
SELECT CONCAT(LEFT('202109',4), '-', RIGHT('202109',2));
内容的提问来源于stack exchange,提问作者Elsa
相关产品推荐
相关产品推荐

