我需要把所有的月份转换成一个2位数的数字,从如下所示:
1,2,3,4,5,6,7,8,9,10,11,12对此:
01,02,03,04,05,06,07,08,09,10,11,12因此,我将一个简单的CASE语句放在一起,以检查月值的长度是否为= 1,然后添加一个前导零,否则保持不变:
SELECT
CASE
WHEN LEN(MONTH(GETDATE())) = 1
THEN RIGHT('0' + CONVERT(VARCHAR(2), MONTH(GETDATE())), 2)
ELSE MONTH(GETDATE())
END我们是在四月,这次行动的结果是'4',而不是'04‘。在检查语句时(不使用条件语句):
right('0' + convert(varchar(2),month(getdate())),2)然后我得到正确的答案(‘04’)..。
这让我心烦意乱。我已经做了整整一天了,我不知道为什么只有代码才能工作,但是封装在CASE语句中的代码失败了。
请帮帮我!
发布于 2018-04-18 18:47:48
您可以通过使用格式化来实现这一点。
SELECT FORMAT(MONTH(GETDATE()), '00') 发布于 2018-04-18 19:32:37
你不需要案件陈述。以下是所有几个月的工作。
select right('0' + convert(varchar(2), month(getdate())), 2)发布于 2018-04-18 18:33:16
将您的其他部分转换为varchar(2),它可以很好地工作。
SELECT CASE WHEN len(month(getdate())) = 1
THEN right('0' + convert(varchar(2),month(getdate())),2)
else CONVERT(varchar(2), month(getdate()))
endhttps://stackoverflow.com/questions/49906631
复制相似问题