Вывод дня рождения от текущей даты

hoting

Новичок
Всем привет, друзья подскажите алгоритм и способ реализации.
Задача: необходимо вывести все дни рождения начиная от -5 дней (от текущей) т.е. графически это так
- 5дней (текущей)
- 4дня (текущей)
- 3дня (текущей)
- 2дня (текущей)
- 1дня (текущей)
- Текущая дата
- +1 день
и так до значения -5дней от текущей,
т.е. в общем должна получится таблица дней рождений в течении года, но просмотр начинается относительно сегодняшней даты а не с начала года ...

Это возможно сделать средствами MySql ? а потом вывести на экран ...
 

WMix

герр M:)ller
Партнер клуба
PHP:
birthday between date_sub(current_date(), interval 5 day) and date_add(current_date(), interval 5 day)
 

antson

Новичок
Партнер клуба
@hoting, открываем MySQL Функции даты и времени
mysql> SELECT something FROM tbl_name
WHERE TO_DAYS(NOW()) - TO_DAYS(date_col) <= 30;
правим пример под свой случай NOW() + 1 * 60 * 60 * 24 сравниваем с <=6
ограничение приблизительно правильно работает с 5 января по 30 декабря.
на 6 дней в году забиваем или пишем альтернативный запрос с худшим эксплайном
TO_DAYS(date_col) in (364,365,1,2,3,4,5) для 4 января.
на остальные тоже проще заготовить заранее.

@WMix, зачем тебе новорожденные и как ты можешь знать, кто родиться завтра ? ;)

@hoting, и еще использовать now() не желательно, лучше сразу поставить текстовый литерал '2016-09-25' иначе не будет использовать квери кеш муськи

Еще остаются глюки с високосностью годов.
Поэтому для лучшего быстродействия я бы ввел два поля
деньгода и годнакоторыйрасчитано
раз в год запускаем скрипт
который берет дату рождения
разбирает ее на d.m.Y потом вместо Y - ставит нужный
от полученной даты берет день в году и записывает
в базу . ищем теперь аналогично . второе поле используем для
контроля отработал ли скрипт.
 
Последнее редактирование:

antson

Новичок
Партнер клуба
чисто муськой можно извратиться , но если только из спортивного любопытсва простынь будет на полкило.
 

antson

Новичок
Партнер клуба
@WMix, я сам хорош. попутал DAYOFYEAR() и TO_DAYS() - так что тоже младенцев считал

Только дошло.
Формируем дата_дня_рождения_в_этом_году и работаем с ней . Нафиг не нужен номер дня в году
 
Последнее редактирование:

SARCASM

Новичок
Ребятки апп темы. Может и не по теме но нужна помощь есть такой запросец select id,nick from `users` where LEFT(birthdays,$len)='$birthdays' он выбирает с сегодняшней датой. А как сделать чтоб с завтрашней?
 

antson

Новичок
Партнер клуба
='$birthdays' догадаешься что должно быть в этом месте ?
 
Сверху