Вы хотите промежуточный запрос на основе вашего столбца даты.
ГДЕ дата МЕЖДУ начальной датой и конечной датой.
Между эквивалентна дате> = начальной дате И дате <= конечной дате.Конечно, было бы также возможно просто использовать> = AND <явно, что немного упростило бы его, потому что вам не нужно находить последний день месяца, а только первый день следующего месяца, используя только DATE_ADD (..., ИНТЕРВАЛ 1 МЕСЯЦ.) </p>
Однако начальная и конечная даты в этом случае будут получены из CURDATE ().
Вы можете использовать CURDATE (), MONTH (), DATE_ADD и STR_TO_DATE дляполучить нужные вам даты (1-й день текущего месяца, последний день текущего месяца).Эта статья решает аналогичную проблему, и все необходимые методы показаны в примерах, которые вы должны быть в состоянии адаптировать:
http://www.gizmola.com/blog/archives/107-Calculate-a-persons-age-in-a-MySQL-query.html
Первый день текущего месяца очевиден ГОД-МЕСЯЦ(CURDATE ()) - 01.Последний день, который вы можете рассчитать с помощью DATE_ADD, чтобы добавить 1 месяц к первому дню текущего месяца, затем DATE_ADD -1 дней.
update- Хорошо, я пошел и сформулировал полный запрос.Не думайте, что str_to_date действительно необходим для получения эффективности индекса, но на самом деле не проверял.
SELECT count(*)
FROM entries
WHERE `date` BETWEEN
CONCAT(YEAR(CURDATE()), '-', MONTH(CURDATE()), '-', '01')
AND
DATE_ADD(DATE_ADD(CONCAT(YEAR(CURDATE()), '-', MONTH(CURDATE()), '-', '01'), INTERVAL 1 MONTH), INTERVAL -1 DAY);