SQL запросы - Пакетное копирование. Пакет на основе даты

Page / - Изменено Alexandr Fokin в 2023/12/16 14:12

Пакетное копирование. Пакет на основе даты

Изменено Alexandr Fokin

в 2023/12/16 14:12

Оглавление

-- Копируем актуальные данные (за последние 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