• This is the solution :

    DECLARE @startDate date , @endDate date;

    SET @startDate = ( SELECT proj_start_date FROM [BSD].[dbo].[d_project_p] WHERE proj_id = 1)

    SET @endDate = ( SELECT proj_end_date FROM [BSD].[dbo].[d_project_p] WHERE proj_id = 1);

    with tmp(plant_date) as

    (

    select cast(@startDate as datetime)

    union all

    select plant_date + 1

    from tmp

    where plant_date < @endDate

    )

    SELECT

    'Week '+CAST(ROW_NUMBER () OVER (ORDER BY start_of_week) AS VARCHAR(20)),

    start_of_week,

    DATEADD(day, 6, start_of_week) AS end_of_week

    FROM tmp

    CROSS APPLY ( VALUES( DATEPART(weekday, DATEADD(day, @@DATEFIRST -1, plant_date)) - 1 ) ) AS A1(dist)

    CROSS APPLY ( VALUES( DATEADD(day, -dist, plant_date) ) ) AS A2(start_of_week)

    GROUP BY start_of_week

    option (maxrecursion 0)