我有信用卡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
我有信用卡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
如果你是2012或以上,...
SELECT FORMAT(DATEFROMPARTS(2000,ExpMonth,1),'MMM','en-US')
或者只是创建一个映射的查找表,并加入到这一点。
这会帮助你转换:
WHILE (select <yourValue> from <yourtable>) < 13
BEGIN
declare @monthNum int;
set @monthNum = <yourValue>
select datename(month, dateadd(month, @monthNum - 1, 0)) as MonthName
END
格式()将是我的记录数量有限的第一选择。
只是更多的选择。
例
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
选项3非常有创意! – Eli
@Eli不得不深入我那箭头的颤抖中,那个人一直回到我的dBase II时代。 (以防万一... 80年代初) –
CASE语句也行。 – pmbAustin