存档早于datetime(天数)的数据sql

rks48beu  于 2021-08-09  发布在  Java
关注(0)|答案(1)|浏览(430)

我有一个简单的sql查询,我打算把它放在一个存储过程中,以便将旧数据从一个表移到一个存档表中。我知道有很多方法可以做到这一点,但以下是我想到的:

DECLARE @days INT
SELECT Product.* INTO 
ProductArchive
WHERE OrderDateTimeUTC  = DATEADD(d, -(@days), GETUTCDATE())

这样做的目的是使其成为一个sql作业,以便每隔一段时间运行。这方面有“最佳实践”吗?主表在任何时候只有少于2000行。

cgfeq70w

cgfeq70w1#

好的,下面是我如何解决我自己的问题,即将数据从一个表移动到一个存档表中,然后从主表中删除。我基本上使用了合并和删除以及临时表。我将查询放在一个存储过程中

DECLARE @days INT
DECLARE @TempTable TABLE
(
  productid int NOT NULL
)
MERGE  ProductArchive as T 
USING (SELECT * FROM Product
WHERE OrderDateTimeUTC  = DATEADD(d, -(@days), GETUTCDATE()) 
) as S
ON T.productid = S.productid
WHEN NOT MATCHED 
THEN 
INSERT 
(
--Insert 
)
VALUES
(
--values
)
--Delete from origin table
OUTPUT inserted.productid INTO @TempTable;
DELETE FROM Product WHERE productid 
IN(SELECT productid From @TempTable)

相关问题