现在我只能想到使用DateAdd功能,它只给我一个从2018年3月到今天13个月的范围。因此,对于3月份,我希望它能够返回2018年2月生效日期的结果,4月份我会想要在2018年3月生效的日期。有关如何实现这一目标的任何想法或建议吗?我想我可以通过声明变量来做到这一点,但认为可能有另一种方法不涉及声明变量。 TIA。
请试试这个。
Declare @tbl Table(
id INT ,
[group] Varchar(50),
[index] varchar(50),
Dat DATETIME,
cases int,
closed int
)
INSERT INTO @tbl VALUES(1,'g1','g2',GETUTCDATE()-1000,250,0)
INSERT INTO @tbl VALUES(2,'g2','g3',GETUTCDATE() -100,350,370)
INSERT INTO @tbl VALUES(3,'g3','g1',GETUTCDATE()-200,330,490)
INSERT INTO @tbl VALUES(3,'g3','g1',GETUTCDATE()+10,60,50)
SELECT * FROM @tbl WHERE Dat BETWEEN DATEADD(MM,-13,GETUTCDATE()) AND GETUTCDATE()
同
DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) - 13, 0)
你在13个月前获得了本月的第一天。
SELECT * FROM
tablename
WHERE
datecolumn
BETWEEN DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) - 13, 0) AND GETDATE()