这些工作在检索本月的第一个月时,6个月前:
DECLARE @Now DATETIME = SYSDATETIME();
--1
SELECT CONVERT(INT,CONVERT(CHAR(8),DATEADD(mm,DATEDIFF(mm,0,@Now)-5,0),112));
--2
SELECT CONVERT(INT,CONVERT(CHAR(6),DATEADD(mm,-5,@Now),112) + '01');
如何使用标准函数CAST
获得相同的结果?
答案 0 :(得分:3)
嗯,你可以这样做,但它不使用cast()
:
select (year(DATEADD(mm,DATEDIFF(mm,0,@Now)-5, 0))*10000 +
month(DATEADD(mm,DATEDIFF(mm,0,@Now)-5, 0))*100
+1)
答案 1 :(得分:1)
select cast(year(dateadd(month, -5,@now)) as char(4))
+ right(100 + month(dateadd(month, -5,@now)), 2) + '01'
替代:
select cast(year(a.n) as char(4)) + right(100 + month(a.n), 2) + '01'
from (select dateadd(m,-5,@now) n) a
答案 2 :(得分:1)
扩展Madhivanan的答案是如何使用CAST而不是CONVERT:)
SELECT REPLACE(CAST(DATEADD(MONTH, DATEDIFF(MONTH, 0, @now) - 5, 0) AS DATE), '-', '')
答案 3 :(得分:0)
有效的方法是
select dateadd(month,datediff(month,0,@now)-5,0)