-2

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

4

1 回答 1

0

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

SQL 服务器:

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() 替换为它(在括号中)。

于 2012-06-25T19:21:28.273 回答