如果我的varchar
如下所示:
'201503'
我如何获得上个月的类似varchar
代表? e,g,'201502'
?特别是如果月份是1月,'201501'
我应该回来'201412'
非常感谢一些帮助:)
答案 0 :(得分:4)
试试这个:
DECLARE @dt VARCHAR(8) = '201501'
SELECT LEFT(CONVERT(VARCHAR(8), DATEADD(m, -1, @dt + '01'), 112), 6)
输出
201412
使用DATEADD,您可以计算上个月。此函数方便地接受字符串作为参数。然后使用CONVERT将结果转换回yyyymmdd
格式。
答案 1 :(得分:1)
declare @indate varchar(8)='201510'
set @indate=@indate+'01' --Just Append day to date , alway append 1st day as 01;
select
case
when month(@indate)-1=0
then convert(varchar,YEAR(@indate)-1)+convert(varchar,12)
when len(month(@indate)-1)<2
then convert(varchar,YEAR(@indate))+'0'+convert(varchar,month(@indate)-1)
else convert(varchar,YEAR(@indate))+convert(varchar,month(@indate)-1)
end as previousMonth