我正在尝试根据名为YEARMO的字段声明当前年份和月份的变量。
它是一个6个字符的varchar字段,前4个字符代表年份,接下来的2个字符代表月份(例如,2018年2月为201802)。
如果月份只有一位数(10月份之前的任何月份),我需要月份变量在它前面有一个0。当前代码返回' 20182'并希望它返回' 201802'。
declare @current_month varchar(6)
set @current_month = CAST( year(getdate()) as varchar(4))
+ case when len(CAST( month(getdate()) as varchar(2))) < 1 then '0' +
CAST( month(getdate()) as varchar(2))
else CAST( month(getdate()) as varchar(2))
end
select @current_month;
答案 0 :(得分:3)
如果您正在寻找当月,可以使用Convert
功能
select convert(char(6), getdate(), 112)
答案 1 :(得分:0)
您的代码过于复杂。请改用right
:
declare @current_month char(6)
set @current_month = CAST( year(getdate()) as varchar(4)) + right('00' + cast(month(getdate()) as varchar(2)), 2)
select @current_month;
结果:
201802
如果您确实想要使用case
,则应将1
更改为2
:
set @current_month = CAST( year(getdate()) as varchar(4)) +
case when len(CAST(month(getdate()) as varchar(2))) < 2 then
'0' + CAST( month(getdate()) as varchar(2)) else
CAST( month(getdate()) as varchar(2)) end
答案 2 :(得分:0)
声明@current_month varchar(6)
设置@current_month = CAST(年(getdate())* 100 +月(getdate())为varchar(6))