我将信用卡ExpiryDate存储为tinyint。我希望将它们视为1月,2月等,而不是1,2,......以下是有效的,但还有其他方法可行吗?
{{1}}
答案 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