Выборка диапазона дат из MySQL?

Если даты хранятся в БД в формате DATE
2017-08-11
2017-08-22
2017-09-14
Можно ли выбрать все данные за август 2017 т.е. в данном примере 2017-08-11, 2017-08-22 не прибегая к утомительному формированию интервала BETWEEN 2017-08-01 AND 2017-08-31?
А как-то попроще сказать ему, типа: дай мне всё что в 08 2017
  • Вопрос задан
  • 5187 просмотров
Решения вопроса 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Лучшим по скорости вариантом будет индекс по дате и условие
WHERE `date` >= '2017-08-01' AND `date` < '2017-09-01'

Можно, конечно, сделать запрос вида
WHERE YEAR(`date`) = 2017 AND MONTH(`date`) = 8
но такой запрос, как и BETWEEN не будет использовать индекс.
Ответ написан
Комментировать
kawabanga
@kawabanga
А чем плох between то? Тем более собирается проще.

where
MONTH('2017-08-01') = 8 and YEAR('2017-08-01') =2017
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы