如何将tinyint值显示为月份名称?

时间:2017-08-08 19:01:04

标签: sql sql-server tsql

我将信用卡ExpiryDate存储为tinyint。我希望将它们视为1月,2月等,而不是1,2,......以下是有效的,但还有其他方法可行吗?

{{1}}

3 个答案:

答案 0 :(得分:4)

如果您在2012年或以上......

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

或者只是创建一个包含映射的查找表并加入其中。

答案 1 :(得分:1)

Format()将是我有限数量记录的首选。

还有几个选择。

示例

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

答案 2 :(得分: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