每日SQL任务:删除表中的内容

16

嘿,我想知道如何在特定的表上设置一个清理任务以删除一周前的内容。

我正在使用 SQL Server 2005。

2个回答

18

在SQL Server Management Studio中,展开SQL Server代理,右键单击"作业"并选择"新建作业..."

在"步骤"中创建一个"新的...",并输入以下内容:

DELETE YourTable WHERE YourDate<GETDATE()-7

或者不考虑时间使用:

DELETE YourTable WHERE YourDate<DATEADD(day,DATEDIFF(day,0,GETDATE()-7),0)

在“计划任务”中,您可以使其每个星期日运行,或者您需要的任何其他时间。


“without regards to time use”是什么意思? - Dov Miller
GETDATE() 函数返回当前日期和时间,无论时间如何。例如,不考虑时间的情况下,可以将 GETDATE() 函数包含在语法中,以将时间设置为 00:00:00.000。尝试运行 SELECT GETDATE(), DATEADD(day,DATEDIFF(day,0,GETDATE()-7),0) - KM.

6
您可以创建一个删除一周前所有内容的任务。例如:
DELETE FROM MyTable
WHERE DateCreated <= dateadd(d, -7, getdate())

这假设你有某种方式来跟踪表中记录的年龄,并且假设没有外键约束。 然后,您可以安排任务在用户未连接时运行。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接