【发布时间】:2019-09-07 18:18:18
【问题描述】:
我需要在设定的日期和设定的月份之后检索所有记录,但年份是可变的。 IE:我需要检索 10 月 1 日之后的所有记录,向后延伸 3 年。
更好的例子:在 2019 年,我需要检索自 2016 年 10 月 1 日以来的所有记录。在 2020 年,我需要检索自 2017 年 10 月 1 日以来的所有记录。
我可以硬编码日期,但我宁愿但不必每年更新代码。
我一直在为我的 WHERE 子句执行此操作,但它显然不会像我需要的那样过滤掉 2016 年 10 月 1 日之前的记录: WHERE Date > DATEADD(year, -3, GETDATE());
【问题讨论】:
-
试试
SELECT DateAdd(yy, -3, GetDate()) -
月份和日期是否总是 10 月 1 日?因此,对于今天,即使我们还没有到 10 月,您是否想要所有值超过
20161001(20191001- 3 年)的行? -
WHERE Date > cast('10/01/'+ cast((datepart(year,getdate())-3) as varchar(5)) as date)
-
日期永远是 10 月 1 日,是的。我只需要从当前日期到 10 月 1 日(当前年份 - 3 年)的所有记录。
标签: sql sql-server tsql