Исходный код вики Пакетное копирование. Пакет на основе даты
Редактировал(а) 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}} |