И простой вопрос, как узнать на данный момент у кого день рождения сегодня?
Всевозможные вычленения порядкого дня в году и сравнение его с шаблоном отметаю... помещение в функцию поля с датой приведет к повальному перебору всей таблицы...
Тогда решил рубануть топором: WHERE `DATE` IN ('1950-04-30','1951-04-30','1952-04-30','1953-04-30',...,'2010-04-30'). В общем путем несложной математики в скобках простое перечисление разных годов.. и соответственно будет их 50-60. С одной стороны тут возможно применение индекса а значит быстрее будет работать но существуют ли рамки, когда количество передаваемых значений в IN () как то отяготит сервер?
Спустя 14 часов, 41 минута, 26 секунд (1.05.2010 - 04:48) andrey написал(а):
А что запрос: WHERE `DATE`= date(YYYY-MM-DD) не работает?
Спустя 2 часа, 5 минут, 6 секунд (1.05.2010 - 06:54) Bivnikus написал(а):
Работает, но день рождения каждый год вообще то бывает:)
Спустя 2 часа, 47 минут, 1 секунда (1.05.2010 - 09:41) andrey написал(а):
Точно! Я чего-то ступил:) В голову приходит только хранить день, месяц и год в разных полях и сравнивать их отдельно. Тоже конечно изврат, но вроде лучше чем такой большой запрос.
Спустя 38 минут, 48 секунд (1.05.2010 - 10:19) glock18 написал(а):
andrey
сомнительно
Bivnikus
решение хорошее. количество значений в in ограничено, но с 50-100 проблем быть не должно.
сомнительно
Bivnikus
решение хорошее. количество значений в in ограничено, но с 50-100 проблем быть не должно.
Спустя 7 часов, 34 минуты, 53 секунды (1.05.2010 - 17:54) Vulkan написал(а):
А если вывести из БД дату рождения полностью, затем функцией substr обрезать например до года и получится например 17-03 (день и месяц рождения), а потом уже сопоставить с сегодняшней днём и месяцем - DD-MM?
Спустя 15 часов, 53 минуты, 6 секунд (2.05.2010 - 09:47) glock18 написал(а):
Vulkan
внимательнее прочитай тред, ТС явно сказал, что ему нужно использование индекса. твой вариант его не будет использовать
внимательнее прочитай тред, ТС явно сказал, что ему нужно использование индекса. твой вариант его не будет использовать