Я пытаюсь группировать записи по неделям, сохраняя агрегированную дату как первый день недели. Тем не менее, стандартная техника, которую я использую для округления дат, кажется, работает некорректно с неделями (хотя она работает в течение дней, месяцев, лет, кварталов и любых других сроков, к которым я применил ее).
Вот SQL:
select "start_of_week" = dateadd(week, datediff(week, 0, getdate()), 0);
Это возвращает 2011-08-22 00:00:00.000
, который является понедельником, а не воскресеньем. Выбор @@datefirst
возвращает 7
, который является кодом для воскресенья, поэтому сервер настроен правильно, насколько мне известно.
Я могу обойти это достаточно легко, изменив приведенный выше код на:
select "start_of_week" = dateadd(week, datediff(week, 0, getdate()), -1);
Но тот факт, что я должен сделать такое исключение, делает меня немного непростым. Кроме того, извините, если это дублирующий вопрос. Я нашел некоторые связанные вопросы, но никто не обращался к этому аспекту конкретно.