Задавайте вопросы, мы ответим
Вы не зашли.
Доброго времени суток, столкнулся с такой задачей, есть база данных, где собраны даты рождения в формате ГГГГ-ММ-ДД.
Нужно выбрать пользователей у которых будет день рождения в в заданном промежутке времени например:
У кого будет день рождение в периоде от 12 августа до 25 сентября.
Заранее спасибо.
Неактивен
Неактивен
Спасибо, но вот один момент я не совсем понял, скажем так, чтобы расшифровать один момент:
Почему не работает корректно вот этот запрос?
Неактивен
Что значит некорректно?
Выдает даты за другие месяцы?
Неактивен
Да приблизительно вот так:
+--------+------------+
| uod_id | uod_bd |
+--------+------------+
| 82 | 1974-03-16 |
| 2 | 1977-04-17 |
| 26 | 1981-07-16 |
| 83 | 1982-10-15 |
| 47 | 1984-07-17 |
+--------+------------+
В то время как 1982-10-15 этой даты быть не должно.
Неактивен
DATE_FORMAT(`uod_bd`,'%d.%m') для '1982-10-15' даст '15.10'
Входит ли это в диапазон между '01.01' и '19.01' ?
Ответ - да. Запрос работает корректно, в том, смысле, что спросили, то он и ответил.
Неактивен
А что нужно поправить, чтобы вот таких сюрпризов не происходило, или может это не корректный подход к задаче?
Неактивен
Переписать запрос, чтобы он искал вхождение даты в указанный диапазон, например, как в моем первом ответе.
Ещё стоит учесть, что индексы на таких запросах работать не будут, возможно стоит пересмотреть структуру.
Неактивен
Понятнинко, спасибо большое, вот как я понимаю запрос в первом ответе:
Неактивен
Да
Неактивен
Спасибо большое, вопрос решен.
Неактивен