存储过程以删除超过N天的记录

时间:2010-10-24 20:18:48

标签: sql sql-server sql-server-2005 tsql

我想创建一个两个存储过程,它们将从stgging数据库中删除超过N天的记录。

两个存储过程都会调用一个包来清理超过N天的数据。

存储过程A将删除表A.Fullimport&中的记录。 stored proc B将从表B.weeklyimport中删除记录。

相同的存储过程将从表x和表Y中没有记录的错误表中删除所有记录。

两个存储过程都将接受输入变量@Cleanupdays

2 个答案:

答案 0 :(得分:6)

基本上,你必须写下这样的东西:

CREATE PROCEDURE dbo.CleanupTableA (@CleanupDays INT)
AS BEGIN  
   DELETE FROM A.Fullimport
   WHERE DATEDIFF(DAY, SomeDateField, GETDATE()) > @CleanupDays
END

或类似的东西 - 如果没有确切的表结构,很难让这完全正确.....

DATEDIFF函数可以为您提供不同单位的两个日期之间的差异 - 例如在几天内,你想要它(也可能是几周,几个月,一年等)。您基本上要做的就是删除所有具有DATEDIFF到今天的日期的行,该日期大于传递给存储过程的@CleanupDays的值。

我不太明白你对错误表的意思......你可能需要澄清一下......

答案 1 :(得分:0)

DELETE FROM TableName WHERE DateColumnName <= DATEADD(day, -30, GETDATE())