Чтобы подсчитать количество выходных дней между двумя датами в SQL, вы можете использовать различные методы. Вот несколько подходов:
Метод 1: использование рекурсивного CTE
WITH recursive cte AS (
SELECT date1 AS date
FROM your_table
UNION ALL
SELECT date + INTERVAL 1 DAY
FROM cte
WHERE date + INTERVAL 1 DAY <= date2
)
SELECT COUNT(*)
FROM cte
WHERE DAYOFWEEK(date) IN (1, 7);
Этот метод использует рекурсивное общее табличное выражение (CTE) для создания ряда дат между заданной датой начала (date1) и датой окончания (date2). Затем функция DAYOFWEEKиспользуется для фильтрации и подсчета выходных дней (воскресенье = 1, суббота = 7).
Метод 2. Использование календарной таблицы
SELECT COUNT(*)
FROM calendar_table
WHERE date BETWEEN date1 AND date2
AND DAYOFWEEK(date) IN (1, 7);
В этом методе вам потребуется предварительно заполненная таблица календаря, содержащая все возможные даты. Затем вы можете использовать эту таблицу, чтобы отфильтровать нужный диапазон дат и подсчитать выходные дни.
Метод 3: использование DATEPART (для SQL Server)
SELECT COUNT(*)
FROM your_table
WHERE date >= date1 AND date <= date2
AND DATEPART(dw, date) IN (1, 7);
Если вы используете SQL Server, вы можете использовать функцию DATEPARTс параметром dw, чтобы извлечь день недели (воскресенье = 1, суббота = 7). ) с даты. Этот метод фильтрует диапазон дат и подсчитывает выходные дни.
Обратите внимание, что фактические имена таблиц и столбцов могут различаться в зависимости от схемы вашей базы данных.