如何编写将文本月份添加到数值的表达式?

How to write an expression that adds text month to numerical value?

我有一份报告,其中 return 一个月内从 2 个地点售出的门数。月份显示为值 1-12.... 我想 return 1-Jan2-Feb

编辑

我正在使用: datepart(MONTH, DeFactoUser.F_ST_Transaction.STTR_DATE) 获取月数,我试过: datepart(MONTH, DeFactoUser.F_ST_Transaction.STTR_DATE) + '-' + datename(MONTH, DeFactoUser.F_ST_Transaction.STTR_DATE) 获取附加到号码的名称。我得到一个错误 Conversion failed when converting the nvarchar value 'September' to data type int.

显然在做一些愚蠢的事情......任何线索都会很好。

试试这个:

SELECT CAST(MONTH(GETDATE()) AS nvarchar(2))  +'-'+ CONVERT(varchar(3), GETDATE(), 100)

您可以使用 case 表达式:

SELECT CASE WHEN [Month] = 1 THEN '1-Jan'
WHEN [Month] = 2 THEN '2-Feb'
WHEN [Month] = 3 THEN '3-Mar'
...
END AS [MonthName]

备选方案正在使用 DATENAME:

SELECT CAST(MONTH(1) AS NVARCHAR(2))+'-'+LEFT(UPPER(DATENAME(MONTH,MONTH(1))),3)

之前有人问过:Convert Month Number to Month Name Function in SQL

如果您不想要 case 表达式。

如果您的月份列是日期,您可以使用 DATENAME 函数。

如果它只是一个数字,您仍然可以使用 DATENAME,但使用 DATEFROMPARTS 模拟日期,例如

SELECT datename(MONTH,datefromparts(2017,1,1))

然后将您的电话号码和姓名与

连接起来
concat(cast(yournum AS varchar(2)),'-',datename(MONTH,datefromparts(2017,1,1)))