add batch remove batch split batch comment selection show hidden batches hide batch highlight batch
db<>fiddle
donate feedback about
By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
DECLARE @intervalDays int = 14 -- Lenght of period (in days)
DECLARE @TabDates TABLE (
ID int PRIMARY KEY identity,
StartDatetime datetime,
EndTDatetime datetime
)

DECLARE @StartDatetime DATETIME = '2021-01-01 00:00'
DECLARE @EndTDatetime DATETIME = '2021-04-20 00:00'

;WITH CTE AS
(
SELECT @StartDatetime st
UNION ALL
SELECT DATEADD(DAY,@intervalDays,st) st
FROM cte
WHERE DATEADD(DAY,@intervalDays,st) < @EndTDatetime
)
INSERT INTO @TabDates(StartDatetime,EndTDatetime)
SELECT st,DATEADD(DAY,@intervalDays,st) FROM cte

UPDATE @TabDates
SET EndTDatetime=DATEADD(second,-1, EndTDatetime)

SELECT *
FROM @TabDates
ID StartDatetime EndTDatetime
1 2021-01-01 00:00:00.000 2021-01-14 23:59:59.000
2 2021-01-15 00:00:00.000 2021-01-28 23:59:59.000
3 2021-01-29 00:00:00.000 2021-02-11 23:59:59.000
4 2021-02-12 00:00:00.000 2021-02-25 23:59:59.000
5 2021-02-26 00:00:00.000 2021-03-11 23:59:59.000
6 2021-03-12 00:00:00.000 2021-03-25 23:59:59.000
7 2021-03-26 00:00:00.000 2021-04-08 23:59:59.000
8 2021-04-09 00:00:00.000 2021-04-22 23:59:59.000