Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Как организовать напоминалку дня рождения?


Автор: kulikoff 16.10.2009, 11:57
Добрый день! Посоветуйте, как красиво и правильно сделать напоминание о дне рождения. В базе данных в поле стоит дата рождения человека. Мне необходимо сделать так, чтоб начиная с 10 дней и меньше было сообщение, что необходимо поздравить ам такого-то. Как выбрать из базы данных правильно этот диапазон дат, не обращая внимания на года+правильный переход на следующий месяц?

Автор: bars80080 16.10.2009, 13:03
а как выглядит дата? какого типа поле?

Автор: nerezus 16.10.2009, 14:30
kulikoff, используй функции работы с датами в твоей СУБД.

Автор: kulikoff 16.10.2009, 14:31
Поле типа date. Хранится дата там в формате YYYY-MM-DD

Автор: nerezus 16.10.2009, 17:15
Цитата(nerezus @  16.10.2009,  15:30 Найти цитируемый пост)
kulikoff, используй функции работы с датами в твоей СУБД.


Автор: kulikoff 16.10.2009, 20:10
чтоб знал какие... Пересмотрел - их, не нашел ничего в MySQL похожего

Автор: Ипатьев 16.10.2009, 20:36
Странно. Я точно помню, что в документации есть специальные примеры, работающие с днями рождения.

Автор: nerezus 16.10.2009, 22:18
Цитата

чтоб знал какие... Пересмотрел - их, не нашел ничего в MySQL похожего
 потому что нет функции "NEAR_BIRTHDAYS_IN_10_DAYS()"
Сравни отформатированную дату из БД с нужным диапазоном.
DATE_FORMAT, DATE_ADD, CURDATE.

Автор: capitan 16.10.2009, 22:47
Код

.....
WHERE DATE_FORMAT(data, '%Y%m%d') BETWEEN {$data_start} AND {$data_finish} 
.....

Автор: kulikoff 20.10.2009, 18:27
Это классная идея, но как быть с годами? Если дата рождения 15-04-1969? Как сделать так, чтоб это дата попадала только в границы 05-04-2010 и 15-04-2010???

Автор: bars80080 20.10.2009, 19:09
имхо, для такой специфической задачи, можно было бы раздобреть на лишнее одно - два поля. вывести в них отдельно месяц и число. вопросы резко снимутся

Автор: Ипатьев 20.10.2009, 19:21
mysql прекрасно работает и с одним полем.
http://dev.mysql.com/doc/refman/5.0/en/date-calculations.html
судя по всему, пользование гуглем - один из самых сложных навыков, недоступных большинству пхп программистов.



Автор: kulikoff 23.10.2009, 22:02
Большое спасибо всем! Вопрос решен!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)