我想创建一个SQL Server作业,它将每月执行并删除所有旧记录,除了最后两个月的数据。我的最终动机是,当作业执行时,我的数据库中只保留最后两个月的数据,而不考虑月份是28天、30天还是31天。
例如,如果作业在3月1日执行,我想在当前数据库中保留从1月1日到3月1日的所有记录,其余的记录都要删除。
目前我正在使用以下SQL查询来选择要删除的数据。
SELECT *
FROM tbl
where [Datetime] <= DATEADD(MONTH, -2,convert(datetime,'03/02/2016') )
注意:日期格式是 "MM/dd/yyyy",但它也会选择1月1日的数据。在每个月的1号执行工作是不固定的。如果我把日期定为 "03/01/2016",那么输出就很好。
那么我将使用以下的where子句
where [Datetime] <= DATEADD(MONTH, -2,Getdate())
所以考虑日期可以是3月的任何日期(或任何月份的日期)。
有什么想法吗?