Пакетное копирование. Пакет на основе даты
Версия 3.1 от Alexandr Fokin на 2020/03/23 15:02
-- Копируем актуальные данные (за последние 3 месяца)
DECLARE @dateStart datetime = DATEADD(MONTH, -3, GETDATE())
DECLARE @dateStop datetime = GETDATE()
DECLARE @weekStep int = 2
DECLARE @curStart datetime = @dateStart
DECLARE @curStop datetime = DATEADD(WEEK, @weekStep, @curStart)
WHILE (1=1)
BEGIN
INSERT INTO dbo.NewTable ([Id], [Data], [DateAdded])
SELECT [Id], [Data], [DateAdded]
FROM [dbo].[OldTable]
WHERE
[DateAdded] BETWEEN @curStart AND @curStop
SET @curStart = @curStop
SET @curStop = DATEADD(WEEK, @weekStep, @curStart)
IF (@curStart > @dateStop)
BEGIN
BREAK
END
END