Вы можете использовать такие функции, как DATE_FORMAT()
в ответе @ Brian или функцию YEAR()
, например:
SELECT COUNT(*) as total
FROM table
WHERE YEAR(date_field) = 2011
Однако этот подход не будет быстрым, если в таблице большенесколько тысяч строк, потому что для этого придется полностью просканировать всю таблицу и применить функцию ко всем записям таблицы.В любом случае лучше иметь условие типа @ Ruslan's (если это поле DATETIME
) или подобное, если это поле DATE
:
WHERE date_field BETWEEN '2011-01-01' AND '2011-12-31'
Я предпочитаю условие, которое работает длялюбой (DATE или DATETIME) тип:
WHERE date_field >= '2011-01-01'
AND date_field < '2012-01-01'
Если у вас есть индекс для date_field
, запрос будет использовать индекс для подсчета без сканирования полной таблицы и будет много разбыстрее.