2017-08-08 135 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年代初) –