Предположение, о котором говорилось выше, состоит в том, что первым днем недели считается понедельник. Однако если вы выполните этот запрос на сайте sql-ex.ru, то получите
day
2013-01-06
А это - воскресенье. Причина в том, что настройки на сайте полагают первым днем недели воскресенье. А можно ли написать решение, которое не зависело бы от настроек сервера? Попробуем сделать так: будем не номер дня использовать при фильтрации, а его название (поменяется лишь последняя строка, но я повторяю весь запрос с тем, чтобы его можно было выполнить без редактирования):
Консоль
Выполнить
WITH num(n)AS(SELECT0
UNIONALL
SELECT n+1FROM num
WHERE n < 6),
dat AS(
SELECT DATEADD(dd, n, CAST('2013-01-01'AS DATETIME))AS day FROM num
)
SELECT day FROM dat WHERE DATENAME(dw, day) = 'monday';