我正在处理一个我希望每月运行的查询,该查询将查看截至13个月前的生效日期

问题描述 投票:0回答:2

现在我只能想到使用DateAdd功能,它只给我一个从2018年3月到今天13个月的范围。因此,对于3月份,我希望它能够返回2018年2月生效日期的结果,4月份我会想要在2018年3月生效的日期。有关如何实现这一目标的任何想法或建议吗?我想我可以通过声明变量来做到这一点,但认为可能有另一种方法不涉及声明变量。 TIA。

sql sql-server
2个回答
1
投票

请试试这个。

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()  

1
投票

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()
© www.soinside.com 2019 - 2024. All rights reserved.