try this version (fills in the date and time of adding all requested columns):
;WITH Dates AS (
SELECT DATEADD(day,DATEDIFF(day,0,GETDATE()),0) as DateOf,
CASE WHEN datename(weekday,getdate()) IN ('Saturday','Sunday') THEN 'Weekend'
ELSE 'WeekDay'
END DayType,
datename(weekday,getdate()) DayOfWeekName
UNION ALL
SELECT DateOf+1,
CASE WHEN datename(weekday,DateOf+1) IN ('Saturday','Sunday') THEN 'Weekend'
ELSE 'WeekDay'
END DayType,
datename(weekday,DateOf+1) DayOfWeekName
FROM Dates
where DateOf < dateadd(yy, 10, getdate())
)
SELECT DateOf,DayType,DayOfWeekName
FROM Dates
OPTION (MAXRECURSION 4000)
to insert into a table, try the following:
DECLARE @DateTable table (DateOf datetime, DayType char(7), DayOfWeekName varchar(10))
;WITH Dates AS (
SELECT DATEADD(day,DATEDIFF(day,0,GETDATE()),0) as DateOf,
CASE WHEN datename(weekday,getdate()) IN ('Saturday','Sunday') THEN 'Weekend'
ELSE 'WeekDay'
END DayType,
datename(weekday,getdate()) DayOfWeekName
UNION ALL
SELECT DateOf+1,
CASE WHEN datename(weekday,DateOf+1) IN ('Saturday','Sunday') THEN 'Weekend'
ELSE 'WeekDay'
END DayType,
datename(weekday,DateOf+1) DayOfWeekName
FROM Dates
where DateOf < dateadd(yy, 10, getdate())
)
INSERT INTO @DateTable (DateOf,DayType,DayOfWeekName)
SELECT DateOf,DayType,DayOfWeekName
FROM Dates
OPTION (MAXRECURSION 4000)
select top 10 * from @DateTable
OTUPUT:
DateOf DayType DayOfWeekName
----------------------- ------- -------------
2011-05-16 00:00:00.000 WeekDay Monday
2011-05-17 00:00:00.000 WeekDay Tuesday
2011-05-18 00:00:00.000 WeekDay Wednesday
2011-05-19 00:00:00.000 WeekDay Thursday
2011-05-20 00:00:00.000 WeekDay Friday
2011-05-21 00:00:00.000 Weekend Saturday
2011-05-22 00:00:00.000 Weekend Sunday
2011-05-23 00:00:00.000 WeekDay Monday
2011-05-24 00:00:00.000 WeekDay Tuesday
2011-05-25 00:00:00.000 WeekDay Wednesday
(10 row(s) affected)