Я пытаюсь сгруппировать записи по неделям, сохраняя агрегированную дату как первый день недели. Однако стандартный метод, который я использую для округления дат, похоже, не работает правильно с неделями (хотя он работает с днями, месяцами, годами, кварталами и любым другим временным интервалом, к которому я его применил).
Вот 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);
Но тот факт, что я должен сделать такое исключение, меня немного беспокоит. Также приношу свои извинения, если это повторяющийся вопрос. Я нашел несколько связанных вопросов, но ни один из них не касался конкретно этого аспекта.