2017-10-16 102 views
0

我有一个报告,它返回从2个地点在一个月内出售的门的数量。月份显示为1-12值....我想回1-Jan2-Feb如何编写将文本月份添加到数值的表达式?

table

编辑

我使用: 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.

显然做一些傻事....任何线索都会很好。

+0

@GarethD链接到一个比较旧的解决方案的名称。我怀疑OP是在2012年 –

+0

如果2012+格式(datefromparts(1,[month],1),'M-MMM') –

+0

@JohnCappelletti请参阅编辑 – Neal1581

回答

1

您可以使用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

如果您不想要案例表达式。

1

试试这个:

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

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

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

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

则正好连接你的电话号码,并与

concat(cast(yournum AS varchar(2)),'-',datename(MONTH,datefromparts(2017,1,1))) 
相关问题