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