创建此sql是为了检查日期,但是当我在2个月前运行测试时,输出是201700而不是201612.
DECLARE @PeriodID AS CHAR(6)
SELECT @PeriodID = CONVERT(char(4), YEAR(GETDATE())) +
CASE
WHEN MONTH(GETDATE())<10 THEN '0' +CONVERT(char(2),MONTH(GETDATE())-2)
ELSE CONVERT(char(2),MONTH(GETDATE())-1)
END
print @periodid
答案 0 :(得分:2)
我同意蒂姆的回答,但他写的代码有点简洁。
以下代码应仅使用一个DateAdd
和一个Convert
来提供相同的结果:
DECLARE @PeriodID AS CHAR(6)
SELECT @PeriodID = CONVERT(CHAR(6), DATEADD(MONTH, -2, GETDATE()), 112)
PRINT @PeriodID
结果(今天 - 2017-02-02):
201612
答案 1 :(得分:1)
我认为处理这个问题最简单的方法就是计算2个月前的日期,然后根据问题暗示,只用年份和月份格式化输出:
SELECT CONVERT(CHAR(4), YEAR(DATEADD(month, -2, GETDATE()))) +
RIGHT('00' + CAST(MONTH(DATEADD(month, -2, GETDATE())) AS CHAR(2)), 2) AS periodId
FROM yourTable