Задать вопрос

Выборка диапазона дат из 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
  • Вопрос задан
  • 5392 просмотра
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Java-разработчик
    8 месяцев
    Далее
  • Shultais Education
    Основы SQL
    3 месяца
    Далее
  • OTUS
    PHP Developer. Professional
    5 месяцев
    Далее
Решения вопроса 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
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы