Пример:
month(log_date)=month(now());
month(log_date) = 12;
выход: 5 воскресенья
ИСПОЛЬЗУЙТЕ МЕЖДУ: - МЕЖДУ оператором выбирает значения в заданном диапазоне.
Примечание: - DAYOFWEEK фактически возвращает 1 для воскресенья
SELECT count(*) AS total_sunday FROM 'table' WHERE DAYOFWEEK('date') = 1 BETWEEN '2017-11-01' AND '2017-11-30';
Возможный способ сделать это, что позволяет избежать использования каких-либо таблиц. Это находит количество дней в месяце, и в зависимости от того, и в какой день недели последний день, тогда он просто возвращает значение
SELECT CASE DAYOFMONTH(LAST_DAY(NOW()))
WHEN 31 THEN
CASE DAYOFWEEK(LAST_DAY(NOW()))
WHEN 1 THEN 5
WHEN 2 THEN 5
WHEN 3 THEN 5
ELSE 4
END
WHEN 30 THEN
CASE DAYOFWEEK(LAST_DAY(NOW()))
WHEN 1 THEN 5
WHEN 2 THEN 5
ELSE 4
END
WHEN 29 THEN
CASE DAYOFWEEK(LAST_DAY(NOW()))
WHEN 1 THEN 5
ELSE 4
END
ELSE 4
END