我正在尝试使我的代码自动化,以便它只能提取30个月前的数据,因为那是在一年中数据集完全完成时。因此,例如,当它是2019年7月1日时,该代码应从30个月前的2017年1月1日起提取。我以为我编写的代码可以做到这一点,但是仍然有2018年记录的实例出现。我可以正确使用此dateadd函数吗?
select *
from table
where month(period_end) <= month(dateadd(month, -30, getdate()))
这很好,但是当我只能看到2017年及之前时,2018年记录仍会显示。
答案 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
比较的最大日期。