将 1 年的数据保存在 table
Keep 1 year data in a table
我有一个名为 Inc_Hist 的 table,它包含过去 3 年的数据,我只想保留 1 年的数据并将剩余数据移至另一个 table Inc_Archive.
Table Inc_hist
的结构
Inc_Num Modified_Date
Inc01 3/4/2014
Inc02 11/2/2013
Inc03 2/1/2015
Inc04 6/3/2013
Inc05 5/3/2014
输出应该是:
Inc_hist
Inc_Num Modified_date
Inc01 3/4/2014
Inc03 2/1/2015
Inc05 5/3/2015
Inc_Archive
Inc_Num Modified_date
Inc02 11/2/2013
Inc04 6/3/2013
您不能一步完成,但您可以先将数据插入存档 table,然后将其从历史记录中删除 table:
INSERT INTO Inc_Archive(Inc_Num, Modified_Date)
SELECT Inc_Num, Modified_Date FROM Inc_Hist
WHERE Modified_Date < @dateFrom -- Define the date
DELETE FROM Inc_Hist
WHERE Modified_Date < @dateFrom -- Define the date
如果您想明确删除从当前日期起超过 1 年的记录,您可以使用函数 DATEADD
和 GETDATE
。将 WHERE
条件更改为以下代码:
WHERE Modified_Date < DATEADD(YEAR, -1, GETDATE())
您可以通过DATEPART
函数过滤掉年份数据。这个给你准确的结果。
DECLARE @Inc_Hist TABLE(Inc_Num varchar(10), Modified_Date date)
DECLARE @Inc_Archive TABLE(Inc_Num varchar(10), Modified_Date date)
insert into @Inc_Hist (Inc_Num, Modified_Date)
Values
('Inc01', '3/4/2014'),
('Inc02', '11/2/2013'),
('Inc03', '2/1/2015'),
('Inc04', '6/3/2013'),
('Inc05', '5/3/2014')
INSERT INTO @Inc_Archive (Inc_Num, Modified_Date)
select Inc_Num, Modified_Date from @Inc_Hist
WHERE DATEPART(Y,Modified_Date) > DATEPART(Y,GETDATE())
DELETE @Inc_Hist
WHERE DATEPART(Y,Modified_Date) > DATEPART(Y,GETDATE())
SELECT Inc_Num, Modified_Date FROM @Inc_Hist
SELECT Inc_Num, Modified_Date FROM @Inc_Archive
希望对您有所帮助。
我有一个名为 Inc_Hist 的 table,它包含过去 3 年的数据,我只想保留 1 年的数据并将剩余数据移至另一个 table Inc_Archive.
Table Inc_hist
的结构Inc_Num Modified_Date
Inc01 3/4/2014
Inc02 11/2/2013
Inc03 2/1/2015
Inc04 6/3/2013
Inc05 5/3/2014
输出应该是:
Inc_hist
Inc_Num Modified_date
Inc01 3/4/2014
Inc03 2/1/2015
Inc05 5/3/2015
Inc_Archive
Inc_Num Modified_date
Inc02 11/2/2013
Inc04 6/3/2013
您不能一步完成,但您可以先将数据插入存档 table,然后将其从历史记录中删除 table:
INSERT INTO Inc_Archive(Inc_Num, Modified_Date)
SELECT Inc_Num, Modified_Date FROM Inc_Hist
WHERE Modified_Date < @dateFrom -- Define the date
DELETE FROM Inc_Hist
WHERE Modified_Date < @dateFrom -- Define the date
如果您想明确删除从当前日期起超过 1 年的记录,您可以使用函数 DATEADD
和 GETDATE
。将 WHERE
条件更改为以下代码:
WHERE Modified_Date < DATEADD(YEAR, -1, GETDATE())
您可以通过DATEPART
函数过滤掉年份数据。这个给你准确的结果。
DECLARE @Inc_Hist TABLE(Inc_Num varchar(10), Modified_Date date)
DECLARE @Inc_Archive TABLE(Inc_Num varchar(10), Modified_Date date)
insert into @Inc_Hist (Inc_Num, Modified_Date)
Values
('Inc01', '3/4/2014'),
('Inc02', '11/2/2013'),
('Inc03', '2/1/2015'),
('Inc04', '6/3/2013'),
('Inc05', '5/3/2014')
INSERT INTO @Inc_Archive (Inc_Num, Modified_Date)
select Inc_Num, Modified_Date from @Inc_Hist
WHERE DATEPART(Y,Modified_Date) > DATEPART(Y,GETDATE())
DELETE @Inc_Hist
WHERE DATEPART(Y,Modified_Date) > DATEPART(Y,GETDATE())
SELECT Inc_Num, Modified_Date FROM @Inc_Hist
SELECT Inc_Num, Modified_Date FROM @Inc_Archive
希望对您有所帮助。