SQL 通过使用 case 语句组合两个 VarChar 字段为当年月份设置变量
SQL Setting Variable for Current Year Month by Combining two VarChar fields using case statement
我正在尝试根据名为 YEARMO 的字段声明当前年份和月份的变量。
这是一个 6 字符的 varchar 字段,前 4 个字符代表年份,接下来的 2 个字符代表月份(例如 2018 年 2 月为 201802)。
如果月份只有一位数字(10 月之前的任何月份),我需要月份变量前面有一个 0。当前代码 returns '20182' 并希望它成为 return '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;
你的代码太复杂了。使用 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
如果要查找当前月份,可以使用 Convert
函数
select convert(char(6), getdate(), 112)
声明@current_month varchar(6)
设置@current_month = CAST(year(getdate())*100 + month(getdate()) as varchar(6))
我正在尝试根据名为 YEARMO 的字段声明当前年份和月份的变量。
这是一个 6 字符的 varchar 字段,前 4 个字符代表年份,接下来的 2 个字符代表月份(例如 2018 年 2 月为 201802)。
如果月份只有一位数字(10 月之前的任何月份),我需要月份变量前面有一个 0。当前代码 returns '20182' 并希望它成为 return '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;
你的代码太复杂了。使用 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
如果要查找当前月份,可以使用 Convert
函数
select convert(char(6), getdate(), 112)
声明@current_month varchar(6)
设置@current_month = CAST(year(getdate())*100 + month(getdate()) as varchar(6))