• The method below is math only, and thus very efficient; works under all date settings; and is flexible/reusable for other days / months / etc..


    DECLARE @start_date date
    SET @start_date = GETDATE()

    ;WITH
    cteTally10 AS (
    SELECT * FROM (VALUES(0),(0),(0),(0),(0),(0),(0),(0),(0),(0)) AS numbers(number)
    ),
    cteTally100 AS (
    SELECT ROW_NUMBER() OVER(ORDER BY c1.number) - 1 AS number
    FROM cteTally10 c1
    CROSS JOIN cteTally10 c2
    )
    SELECT DATEADD(DAY, -DATEDIFF(DAY, 0, @start_date) % 7,
      DATEADD(DAY, -7 * week#.number, @start_date)) AS Monday
    FROM cteTally100 week#
    WHERE week#.number BETWEEN 0 AND 15
    ORDER BY Monday;

    SQL DBA,SQL Server MVP(07, 08, 09) "It's a dog-eat-dog world, and I'm wearing Milk-Bone underwear." "Norm", on "Cheers". Also from "Cheers", from "Carla": "You need to know 3 things about Tortelli men: Tortelli men draw women like flies; Tortelli men treat women like flies; Tortelli men's brains are in their flies".