Вы хотите что-то подобное в MySQL ( отредактировано - ДЕЙСТВИТЕЛЬНО РАБОЧИЙ ПРИМЕР):
SELECT *
FROM `tbl_office_employee` e
WHERE FLOOR(
(
UNIX_TIMESTAMP(
CONCAT(
YEAR(CURDATE()) + (DATE_FORMAT(e.birthdate, '%m-%d') < DATE_FORMAT(CURDATE(), '%m-%d')),
DATE_FORMAT(e.birthdate, '-%m-%d')))
- UNIX_TIMESTAMP(CURDATE()))
/ 86400) < 5
SQL-запрос, написанный ниже, не выбираетдень рождения, который наступит в следующем году (то есть 1-5 января, когда наступит 31 декабря), поэтому используйте один выше ...
Мне пришлось использовать UNIX_TIMESTAMP
, из-за смены дня, то есть с 31 мая по 5 июня (5 не больше 31) и изменения года в e.birthdate
.
Это можно сделать вDQL (Doctrine 1):
Doctrine_Query::create()
->select('e.firtsname')
->from('tbl_office_employee e')
->where('e.date BETWEEN ? AND ?', array($today_date, $date_plus_5_days))
->getSqlQuery();
, который должен выводить в основном то же самое.
Я не думаю, что DATE_ADD
доступен в DQL "из коробки", но в есть глава под названием Пользовательские функции DQL в документах, в которой есть пример реализации DATE_ADD
функция для MySQL .