Ответ 1
Просто используйте MONTH() и YEAR()
SELECT * FROM Project WHERE MONTH(DueDate) = 1 AND YEAR(DueDate) = 2010
Как я могу получить записи из таблицы, используя месяц/год? У меня есть таблица вроде этого:
Name - varchar
DueDate -datetime
Status -boll
DueDate
- дата выполнения проекта, мне нужна запись, соответствующая месяцу/году, а не полная дата, я имею в виду запись за определенный месяц.
Как это сделать в mysql?
Просто используйте MONTH() и YEAR()
SELECT * FROM Project WHERE MONTH(DueDate) = 1 AND YEAR(DueDate) = 2010
Вы можете использовать оператор:
select * from Project
where DueDate between '2010-01-01' and '2010-02-01'
Не используйте здесь рекомендованное решение с 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 использовать индекс, поэтому производительность будет лучше.
SELECT Name FROM Table Where MONTH(datetime) = 1;
1 = январь.
http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_month
он выберет конкретный месяц текущего года
SELECT * FROM Project WHERE MONTH(DueDate) = 1 AND YEAR(DueDate) = YEAR(NOW())
SELECT * WHERE MONTH(DueDate) = '5' AND YEAR(DueDate) = '1987';