DECLARE @StartDate datetime, @Days int SET @StartDate = '12/16/2009' SET @Days = 365*2 DECLARE @TableOfDates table ( WorkDate datetime, WorkDateNumber int ) /* INSERT INTO @TableOfDates SELECT (@StartDate+ number) AS dt, DATEPART(dw,@StartDate+ number) AS dow FROM master..spt_values WHERE type = 'P' AND number <= @Days AND DATEPART(dw,@StartDate+ number) IN (2,4,6) */ INSERT INTO @TableOfDates SELECT dt, DATEPART(dw, dt) AS dow FROM (SELECT (@StartDate+ number) AS dt FROM master..spt_values WHERE type = 'P' AND number <= @Days) dates WHERE DATEPART(dw, dt) IN (2,4,6) SELECT * FROM @TableOfDatesThe master..spt_values table is used as a numbers table with values in range 0-2047.
>declare @StartDate varchar(10) = '12/16/2009' >declare @DowsOfWeek = '2,4,6' -- MWF Example >declare @TableOfDates table >( >WorkDate varchar(10), >WorkDateNumber int, >SchedStart varchar(10), >SchedEnd varchar(10), >VarianceFromPlanned int, >Booked bit >) >-- 2,4,6 is MWF >-- 3,5,7 is TTS >--------------------------------------------------------------------------------------------- >WorkDate WorkDateNumber SchedStart SchedEnd VarianceFromPlanned Booked >---------------------------------------------------------------------------------------------- >12/16/2009 4 >121/8/2009 6 >12/21/2009 2 >12/23/2009 4 >