Это сгруппирует по неделям (начиная с воскресенья) и будет быстрее, чем другие методы вычисления даты, такие как DateAdd, DateDiff, DatePart и Format.
SELECT
CDate((([DateColumn] - 1) \ 7) * 7 + 1) AS WeekStartingDate,
Sum([OrderCount]) AS SumOfOrders
FROM
Orders
GROUP BY
CDate((([DateColumn] - 1) \ 7) * 7 + 1);
Если вы хотите увидеть дату окончания недели, добавьте7 в конце вместо 1. Выражение GROUP BY, вероятно, может быть просто ([DateColumn] - 1) \ 7
, но я не уверен.
Обратная косая черта выполняет целочисленное деление, деление на 7 превращает неделю дат в одно целоеи -1 корректирует тот факт, что «нулевой датой» является суббота, а не воскресенье.Чтобы использовать другой начальный день недели, настройте -1 и +1 на одинаковую величину.Например, для использования понедельника это будет -2 и + 2.
Это не зависит от языка и региона в зависимости от внутреннего представления дат в VB чисел.