• How about something like this:

    with DateCTE as

    (

    select cast('01/01/1998' as datetime) DateValue

    union all

    select DateValue + 1

    from DateCTE

    where DateValue + 1 < '1/1/2016'

    )

    Select

    cast(CAST(DateValue AS CHAR(11)) AS DateTime) AS [FullDate],

    DATEPART(wk, DateValue) AS WeekOfYear,

    DATEPART(yy, DateValue) AS CalendarYear

    from DateCTE

    OPTION (MAXRECURSION 0)

    G. Milner