如何将MMM格式月份与YYYY格式年份列合并为MMM-YYYY格式?
解决MMM格式月份与YYYY年份列合并为MMM-YYYY格式的问题
看来你是想把分开的MMM格式月份列和YYYY年份列合并成MMM-YYYY的统一日期标识对吧?你之前用的语句cast(convert(varchar(6),c.Year,112) as int)[Month/Year]其实只在处理年份列,完全没用到月份数据,难怪只能提取出年份~
给你几个简单直接的解决方案:
基础拼接方案(适用于SQL Server)
如果你的月份列已经是标准的MMM格式(比如Jan、Feb),年份列是整数或字符串类型的YYYY格式,直接用字符串拼接就能得到想要的结果:
SELECT CONCAT(c.MonthColumn, '-', c.YearColumn) AS [Month/Year] FROM YourTable c;
记得把上面的MonthColumn换成你实际的月份列名,YourTable换成对应的表名。
带格式校验的拼接方案
如果担心月份列可能存在多余空格(比如Jan),可以用TRIM函数先清理格式,避免出现 Jan-2023这种带空格的结果:
SELECT CONCAT(TRIM(c.MonthColumn), '-', c.YearColumn) AS [Month/Year] FROM YourTable c;
补充说明
你之前用的convert(varchar(6),c.Year,112)其实是把年份(比如2023)转换成2023(因为112格式是YYYYMM,而年份只有四位,所以结果还是YYYY),再转成整数,整个过程和月份列完全无关,所以才得不到合并后的结果。直接拼接两个列才是最直接的方式哦。
内容的提问来源于stack exchange,提问作者JustLee
相关产品推荐
相关产品推荐

