存储过程将数据从特定时间戳插入临时表并截断主表

时间:2012-06-25 19:10:13

标签: sql sql-server stored-procedures sql-server-2008-r2

我有一组表(_del表),可以跟踪所有已删除的数据。我希望将具有今天和稍后时间戳的记录从这些表复制到临时表中。之后我想截断_del表。有人可以帮助我使用上述逻辑的存储过程。

1 个答案:

答案 0 :(得分:0)

您使用的数据库是什么?要从单个表复制到另一个表,其中特定列的日期大于现在,您可以使用:

SQL Server:

INSERT INTO MyTempTable1 (Column1, Column2, Colu...)
    SELECT Column1, Column2, Colu...
      FROM _delTable1
     WHERE MyDateColumn > GetDate();

TRUNCATE TABLE _delTable1;

MySQL的:

INSERT INTO MyTempTable1 (Column1, Column2, Colu...)
    SELECT Column1, Column2, Colu...
      FROM _delTable1
     WHERE MyDateColumn > CURRENT_TIMESTAMP();

TRUNCATE TABLE _delTable1;

如果你想为每个以_del开头的表动态构建查询,那么你可以循环遍历表并构建查询并执行它们 - 但这取决于你使用的数据库甚至是什么版本。

另一种选择(取决于你想做什么)只是删除比今天更早的数据(现在或今天的开始)。

要开始今天,你可以这样做:

SELECT DATEADD(DAY, DATEDIFF(DAY, -1, GETDATE()), -1)

如果你想使用它,只需用它替换GetDate()或CURRENT_TIMESTAMP()(在括号中)。