MySQL выбирает строки с датой В MySQL у меня есть этот запрос SELECT DISTINCT date, descr FROM book ORDER BY date Дата находится в формате yyyy-mm-dd Я хочу выбрать только книги с января 2012 года. Я пытался использовать like, но это не работает. Любые идеи? Ответ 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' Это даст вам книги этого года
Ответ 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' Это даст вам книги этого года