Try this:DECLARE @start_date DATETIME = '20110912 00:10:00.000';DECLARE @end_date DATETIME = '20110915 00:12:00.000';WITH DigitsCTE AS( SELECT digit FROM (VALUES(0), (1), (2), (3), (4), (5), (6), (7), (8), (9)) AS D(digit)), NumbersCTE AS( SELECT TOP(DATEDIFF(MINUTE, @start_date, @end_date)) ROW_NUMBER() OVER(ORDER BY(SELECT NULL)) AS number FROM DigitsCTE AS D0, DigitsCTE AS D1, DigitsCTE AS D2, DigitsCTE AS D3)SELECT DATEADD(MINUTE, number - 1, @start_date) AS StartDT, DATEADD(MINUTE, number, @start_date) AS EndDT FROM NumbersCTE;