Подтвердить что ты не робот

MySQL выбирает строки с датой

В MySQL у меня есть этот запрос

SELECT DISTINCT date, descr FROM book ORDER BY date

Дата находится в формате yyyy-mm-dd

Я хочу выбрать только книги с января 2012 года. Я пытался использовать like, но это не работает.

Любые идеи?

4b9b3361

Ответ 1

Использование DATE_FORMAT функция

SELECT DISTINCT date, descr FROM book 
WHERE DATE_FORMAT(date, '%Y %m') = DATE_FORMAT('2012-01-01', '%Y %m')
ORDER BY date

Или используя MONTH и YEAR функции

SELECT DISTINCT date, descr FROM book 
WHERE Month(date) = Month('2012-01-01')
AND Year(date) = Year('2012-01-01')
ORDER BY date;

Или используя BETWEEN функции

SELECT DISTINCT date, descr FROM book 
WHERE date BETWEEN '2012-01-01'
AND '2012-01-31'
ORDER BY date;

Или используя <= и >= операторы

SELECT DISTINCT date, descr FROM book 
WHERE date >= '2012-01-01'
AND date <= '2012-01-31'
ORDER BY date;

См. этот SQLFiddle

Ответ 2

Здесь вы можете использовать операторы >= и <=. Проверьте код ниже:

SELECT *
FROM book
WHERE date >= '2012-01-01' AND date <= '2012-01-31'

Ответ 3

Попробуйте следующее:

SELECT DISTINCT date, descr FROM book WHERE YEAR(date) = '2012' and MONTH(date) = '1'

Это работает, если ваш "date" -column - это поле даты MySQL.

Ответ 4

Если вы настаиваете на том, что хотите использовать синтаксис LIKE, вы можете сначала преобразовать дату в CHAR:

SELECT DISTINCT date, descr FROM book WHERE CAST (date AS char) LIKE '2012-01%' ORDER BY date;

Ответ 5

SELECT DISTINCT date, descr
FROM book
WHERE YEAR = DATE(NOW()) AND MONTH(date) = '1'

Это даст вам книги этого года