2017-08-08 136 views
1

我有信用卡ExpiryDate存儲爲tinyint。我希望將它們看作1月,2月等,而不是1,2,...以下作品,但是可以採用其他方式嗎?如何將tinyint值顯示爲月份名稱?

SELECT ExpMonth, CHOOSE(ExpMonth, 'Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec') 
FROM Sales.CreditCard 
+0

CASE語句也行。 – pmbAustin

回答

4

如果你是2012或以上,...

SELECT FORMAT(DATEFROMPARTS(2000,ExpMonth,1),'MMM','en-US') 

或者只是創建一個映射的查找表,並加入到這一點。

0

這會幫助你轉換:

WHILE (select <yourValue> from <yourtable>) < 13 
BEGIN 
    declare @monthNum int; 
    set @monthNum = <yourValue> 

    select datename(month, dateadd(month, @monthNum - 1, 0)) as MonthName 
END 
1

格式()將是我的記錄數量有限的第一選擇。

只是更多的選擇。

Declare @YourTable table(ExpMonth int) 
Insert Into @YourTable values 
(1),(3),(12) 

SELECT ExpMonth 
    , Option2 = left(datename(month,datefromparts(1900,ExpMonth,1)),3) 
    , Option3 = substring(' JanFebMarAprMayJunJulAugSepOctNovDec',ExpMonth*3,3) 
FROM @YourTable 

返回

ExpMonth Option2 Option3 
1   Jan  Jan 
3   Mar  Mar 
12   Dec  Dec 
+0

選項3非常有創意! – Eli

+0

@Eli不得不深入我那箭頭的顫抖中,那個人一直回到我的dBase II時代。 (以防萬一... 80年代初) –