SET NOCOUNT ONDECLARE @MyDateFirst INTSET @MyDateFirst = @@DATEFIRST DECLARE @C INTSET @c = 1WHILE @c < 8BEGIN --EXEC sp_executeSQL N'SET DATEFIRST ' + CAST( @c AS nVARCHAR(4)) SET DATEFIRST @c SELECT CONVERT( VARCHAR(10), GETDATE(), 101) AS DayInQuestion, @c AS DateFirst_Set_To, DATEPART(ww, getdate()) AS WeekNum, DATEPART( dw, GETDATE()) AS DayOfWeekNum, DATENAME( dw, DATEADD( yy, DATEDIFF( yy, 0, GETDATE()), 0)) AS NameOfDayOfWeekOfFirstOfYear SET @c = @c + 1ENDSET DATEFIRST @MyDateFirstSET NOCOUNT OFF
DayInQuestion DateFirst_Set_To WeekNum DayOfWeekNum NameOfDayOfWeekOfFirstOfYear------------- ---------------- ----------- ------------ ------------------------------11/03/2010 1 45 3 Friday11/03/2010 2 45 2 Friday11/03/2010 3 45 1 Friday11/03/2010 4 44 7 Friday11/03/2010 5 44 6 Friday11/03/2010 6 45 5 Friday11/03/2010 7 45 4 Friday
SET NOCOUNT ONDECLARE @MyDateFirst INTSET @MyDateFirst = @@DATEFIRST DECLARE @C INTSET @c = 1WHILE @c < 8BEGIN --EXEC sp_executeSQL N'SET DATEFIRST ' + CAST( @c AS nVARCHAR(4)) SET DATEFIRST @c SELECT CONVERT( VARCHAR(12), DATEADD( dd, N-1, '1/1/2010')) AS DayInQuestion, @c AS DateFirst_Set_To, DATEPART(ww, DATEADD( dd, N-1, '1/1/2010')) AS WeekNum, DATEPART( dw, DATEADD( dd, N-1, '1/1/2010')) AS DayOfWeekNum, DATENAME( dw, DATEADD( dd, N-1, '1/1/2010')) AS DayOfWeekName, DATENAME( dw, DATEADD( yy, DATEDIFF( yy, 0, GETDATE()), 0)) AS NameOfDayOfWeekOfFirstOfYear FROM tempdb..Tally WHERE N <= 7 SET @c = @c + 1ENDSET DATEFIRST @MyDateFirstSET NOCOUNT OFF
DayInQuestion DateFirst_Set_To WeekNum DayOfWeekNum DayOfWeekName NameOfDayOfWeekOfFirstOfYear------------- ---------------- ----------- ------------ ------------------------------ ------------------------------Jan 1 2010 1 1 5 Friday FridayJan 2 2010 1 1 6 Saturday FridayJan 3 2010 1 1 7 Sunday FridayJan 4 2010 1 2 1 Monday FridayJan 5 2010 1 2 2 Tuesday FridayJan 6 2010 1 2 3 Wednesday FridayJan 7 2010 1 2 4 Thursday Friday
Value First day of the week is 1 Monday2 Tuesday3 Wednesday4 Thursday5 Friday6 Saturday7 Sunday
SELECT DATEADD(wk,DATEDIFF(wk,0,YourDateValue),0)
SELECT DATEADD(wk,DATEDIFF(wk,0,YourDateValue - 1),0)