SELECT
name,
birthday,
DAYOFWEEK(birthday),
birthday + INTERVAL(YEAR(CURRENT_TIMESTAMP) - YEAR(birthday)) + 0 YEAR AS currbirthday,
birthday + INTERVAL(YEAR(CURRENT_TIMESTAMP) - YEAR(birthday)) + 1 YEAR AS nextbirthday
FROM oleg_birth
ORDER BY CASE WHEN currbirthday < CURRENT_TIMESTAMP
THEN nextbirthday
ELSE currbirthday
END
Павел, ваш запрос ничего не выдаст, т.к. все даты рождения меньше сегодняшней.
Если сортировать по месяцу:
WHERE date_format(birthday,'%m-%d') > date_format(now(),'%m-%d')
ORDER BY date_format(birthday,'%m-%d'), то будет правильный вывод дат до смены года.
Мой вопрос, как предусмотреть смену года в одном запросе.