Ваш запрос рабочий, однако конвертация в секунды имеет один недостаток — в выборку не попадают сегодняшние дни рождения, посколько unix_timestamp(now()) даже при совпадении дат отличается от unix_timestamp(birthdate) в большую сторону на текущее время.
Хотя это легко исправимо, думаю Ваш запрос все-таки, скажем так, элегантнее :)
select
u.birthdate
from user__accounts as u
where
datediff(
date_add(
u.birthdate,
interval year(from_days(datediff(current_date, u.birthdate)))+1 year
),
current_date
) < 5
Хотя это легко исправимо, думаю Ваш запрос все-таки, скажем так, элегантнее :)
Подставьте вместо current_date '2009-12-31', например.
Но, если рассуждать логически, выполняются все те же действия, что и у Вас, только средствами mysql, что, по моему подозрению, быстрее чем zf+mysql.
select
u.birthdate
from user__accounts as u
where
datediff(
date_add(
u.birthdate,
interval year(from_days(datediff(current_date, u.birthdate)))+1 year
),
current_date
) < 5