Как в SQL выбрать пользователей, у которых день рождения в ближайшую неделю?

В таблице пользователей есть поле birthday в формате date (1988-02-02). Необходимо выбрать пользователей у которых день рождения в ближайшие 7 дней.
  • Вопрос задан
  • 11707 просмотров
Решения вопроса 1
Kerman
@Kerman
Предыдущим двум: не всё так очевидно, как кажется. Вы выбираете по дате рождения, а не ДНЮ рождения.
Для того, чтобы найти день рождения можно воспользоваться функцией DAYOFYEAR(date).
Должно получиться что-то вроде
WHERE DAYOFYEAR(birthday) BETWEEN DAYOFYEAR(NOW) AND DAYOFYEAR(DATE_ADD(NOW(), 7 INTERVAL DAYS))

Запрос не проверял, но надеюсь, идея понятна.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
nowm
@nowm
Можно добавить в SQL-запрос условие:

WHERE TIMESTAMPDIFF(DAY, `birthday`, NOW()) BETWEEN 0 AND 7

WHERE TIMESTAMPDIFF(
    DAY, 
    DATE_ADD(`birthday`, INTERVAL YEAR(NOW())-YEAR(`birthday`) YEAR), 
    NOW()
) BETWEEN 0 AND 7

(На несколько строк разбил только для того, чтобы было удобнее читать.)

Спасибо @Kerman за подсказку — совсем не подумал про то, что нужно обратить внимание на год в `birthday`.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы