给定varchar时,在SQL中获得上个月

时间:2015-05-15 05:25:00

标签: sql sql-server

如果我的varchar如下所示:

'201503'

我如何获得上个月的类似varchar代表? e,g,'201502'?特别是如果月份是1月,'201501'我应该回来'201412'

非常感谢一些帮助:)

2 个答案:

答案 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