• Here is a quick example using a Tally/Numbers CTE

    😎

    USE tempdb;

    GO

    SET NOCOUNT ON

    /* Generate a set of dates at a given interval

    from the start date untill the end date

    */

    DECLARE @INTERVAL INT = 17;

    DECLARE @START_DATE DATE = '2014-09-01'

    DECLARE @END_DATE DATE = '2015-09-01'

    DECLARE @NUM_DAYS INT = CEILING(DATEDIFF(DAY,@START_DATE,@END_DATE) / (@INTERVAL * 1.0));

    ;WITH T(N) AS (SELECT N FROM ( VALUES (NULL),(NULL),(NULL),(NULL),(NULL),(NULL)

    ,(NULL),(NULL),(NULL),(NULL)) AS X(N))

    ,NUMS(N) AS (SELECT TOP(@NUM_DAYS + 1) ROW_NUMBER() OVER

    (ORDER BY (SELECT NULL)) - 1 AS N FROM T T1,T T2,T T3,T T4,T T5,T T6,T T7)

    SELECT

    NM.N AS INTERVAL_NUMBER

    ,DATEADD(DAY,NM.N * @INTERVAL,@START_DATE) AS INTERVAL_DATE

    FROM NUMS NM

    Top 10 Results

    INTERVAL_NUMBER INTERVAL_DATE

    ---------------- -------------

    0 2014-09-01

    1 2014-09-18

    2 2014-10-05

    3 2014-10-22

    4 2014-11-08

    5 2014-11-25

    6 2014-12-12

    7 2014-12-29

    8 2015-01-15

    9 2015-02-01

    10 2015-02-18