2017-10-16 93 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))) 
相關問題