Исходный код вики Пакетное копирование. Пакет на основе даты
Редактировал(а) Alexandr Fokin 2023/12/16 14:12
Последние авторы
author | version | line-number | content |
---|---|---|---|
1 | {{code language="sql"}} | ||
2 | |||
3 | -- Копируем актуальные данные (за последние 3 месяца) | ||
4 | DECLARE @dateStart datetime = DATEADD(MONTH, -3, GETDATE()) | ||
5 | DECLARE @dateStop datetime = GETDATE() | ||
6 | DECLARE @weekStep int = 2 | ||
7 | |||
8 | DECLARE @curStart datetime = @dateStart | ||
9 | DECLARE @curStop datetime = DATEADD(WEEK, @weekStep, @curStart) | ||
10 | |||
11 | |||
12 | WHILE (1=1) | ||
13 | BEGIN | ||
14 | INSERT INTO dbo.NewTable ([Id], [Data], [DateAdded]) | ||
15 | SELECT [Id], [Data], [DateAdded] | ||
16 | FROM [dbo].[OldTable] | ||
17 | WHERE | ||
18 | [DateAdded] BETWEEN @curStart AND @curStop | ||
19 | |||
20 | SET @curStart = @curStop | ||
21 | SET @curStop = DATEADD(WEEK, @weekStep, @curStart) | ||
22 | |||
23 | IF (@curStart > @dateStop) | ||
24 | BEGIN | ||
25 | BREAK | ||
26 | END | ||
27 | END | ||
28 | |||
29 | {{/code}} |