【发布时间】:2018-09-05 23:50:48
【问题描述】:
我想创建一个 SQL Server 作业,该作业将每月执行,并将删除除过去两个月数据之外的所有旧记录。我的最终目的是在作业执行时只在我的数据库中保留最近 2 个月的数据,无论月份是 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())
因此请考虑日期可以是三月的任何日期(或任何月份的日期)。
有什么想法吗?
【问题讨论】:
标签: sql-server-2008