MySQL字符串日期转完整月份名称返回NULL的解决方法求助
解决方法
你的问题出在STR_TO_DATE的格式参数与原字符串格式不匹配,导致转换失败返回NULL,进而让DATE_FORMAT也输出NULL。
原字符串是"1/5/2019"(月/日/年),正确的处理步骤是:
- 先用
%m/%d/%Y格式把字符串转成日期类型; - 再用
DATE_FORMAT的%M参数提取完整拼写的月份名称。
正确查询语句
仅获取完整月份名称:
SELECT DATE_FORMAT(STR_TO_DATE(`date`, '%m/%d/%Y'), '%M') AS full_month_name FROM `supermarket_sales`;
如果需要同时保留格式化后的日期和月份名称:
SELECT STR_TO_DATE(`date`, '%m/%d/%Y') AS formatted_date, DATE_FORMAT(STR_TO_DATE(`date`, '%m/%d/%Y'), '%M') AS full_month_name FROM `supermarket_sales`;
错误原因说明
你之前的查询中,STR_TO_DATE(date,'%d %M %Y')使用的格式符是“日 月份全称 年”,和原字符串的“月/日/年”格式完全不符,所以转换失败返回NULL,后续的DATE_FORMAT无法处理NULL值,最终输出NULL。
内容的提问来源于stack exchange,提问作者John Beasley
相关产品推荐
相关产品推荐

