Выбрать по месяцам поля

Как я могу получить записи из таблицы, используя месяц/год? У меня есть таблица вроде этого:

Name - varchar
DueDate -datetime
Status -boll

DueDate - дата выполнения проекта, мне нужна запись, соответствующая месяцу/году, а не полная дата, я имею в виду запись за определенный месяц.

Как это сделать в mysql?

Ответ 1

Просто используйте MONTH() и YEAR()

SELECT * FROM Project WHERE MONTH(DueDate) = 1 AND YEAR(DueDate) = 2010

Ответ 2

Вы можете использовать оператор:

select * from Project 
  where DueDate between '2010-01-01' and '2010-02-01'

Ответ 3

Не используйте здесь рекомендованное решение с MONTH() и YEAR(). Он запрещает MySQL использовать индекс в столбце DueDate, если он у вас есть, и он заставляет MySQL проверять все строки в таблице.

Вместо этого используйте предложение BETWEEN следующим образом:

SELECT * FROM Project 
WHERE DueDate BETWEEN '2010-01-01' AND '2010-02-01'

Или другое решение с предложением IN:

SELECT * FROM Project 
WHERE DueDate IN ('2010-01-01', '2010-01-02', '2010-01-03', ..., '2010-01-31')

Эти два решения позволяют MySQL использовать индекс, поэтому производительность будет лучше.

Ответ 5

он выберет конкретный месяц текущего года

SELECT * FROM Project WHERE MONTH(DueDate) = 1 AND YEAR(DueDate) = YEAR(NOW())

Ответ 6

Вы можете извлечь MONTH() и YEAR() для вашей DueDate.

Ответ 7

SELECT * WHERE MONTH(DueDate) = '5' AND YEAR(DueDate) = '1987';