如何提取30个月之前和之前的数据?

时间:2019-06-18 19:40:11

标签: sql-server

我正在尝试使我的代码自动化,以便它只能提取30个月前的数据,因为那是在一年中数据集完全完成时。因此,例如,当它是2019年7月1日时,该代码应从30个月前的2017年1月1日起提取。我以为我编写的代码可以做到这一点,但是仍然有2018年记录的实例出现。我可以正确使用此dateadd函数吗?

select *
from table
where month(period_end) <= month(dateadd(month, -30, getdate()))

这很好,但是当我只能看到2017年及之前时,2018年记录仍会显示。

2 个答案:

答案 0 :(得分:1)

问题在于使用MONTH()函数-返回一个数字1-12,因此您实际上是将period_end的月份数与30个月前的月份数进行比较。将您的WHERE替换为

WHERE period_end <= DATEADD(MONTH, -30, GETDATE())

答案 1 :(得分:0)

简化它,您不需要month():

where period_end <= dateadd(month, -30, getdate())

dateadd(month, -30, getdate())返回您想与period_end比较的最大日期。