从表中删除内容的日常 SQL 任务
Posted
技术标签:
【中文标题】从表中删除内容的日常 SQL 任务【英文标题】:Daily SQL Task to delete contents from a table 【发布时间】:2011-04-19 21:57:19 【问题描述】:嘿,我想知道如何在特定表上设置清理任务以删除一周前的内容。
我使用的是 SQL Server 2005
【问题讨论】:
【参考方案1】:在 SQL Server Management Studio 中,展开 SQL Server 代理,右键单击“作业”并选择“新建作业...”
在“步骤”中,创建一个“新建...”并输入:
DELETE YourTable WHERE YourDate<GETDATE()-7
或不考虑时间使用:
DELETE YourTable WHERE YourDate<DATEADD(day,DATEDIFF(day,0,GETDATE()-7),0)
在“日程安排”中,您可以让它在每周日或您需要的任何时间运行。
【讨论】:
“不考虑时间使用”是什么意思? GETDATE() 返回当前日期和当前时间,不考虑时间示例将 GETDATE() 函数包装在语法中以将时间设置为 00:00:00.000。试试看运行SELECT GETDATE(), DATEADD(day,DATEDIFF(day,0,GETDATE()-7),0)
【参考方案2】:
您可以创建一个删除一周前所有内容的作业。例如,
DELETE FROM MyTable
WHERE DateCreated <= dateadd(d, -7, getdate())
不过,这假设您有某种方法可以跟踪记录在表中的存在时间,并且还假设没有外键约束。
然后您可以安排作业在用户未连接时运行。
【讨论】:
以上是关于从表中删除内容的日常 SQL 任务的主要内容,如果未能解决你的问题,请参考以下文章