Ваша проблема в том, что дата рождения не в текущем году, поэтому ваш тест не может быть верным.Вам необходимо преобразовать дату рождения в значение в текущем году, что вы можете сделать следующим образом:
STR_TO_DATE(CONCAT(YEAR(NOW()), '-', MONTH(birthdate), '-', DAY(birthdate)), '%Y-%m-%d')
Таким образом, ваш запрос становится:
SELECT firstname, lastname, IF(housenumber_addition = "", CONCAT(housenumber,housenumber_addition ), housenumber_addition ) AS adres, sex
FROM customer
WHERE STR_TO_DATE(CONCAT(YEAR(NOW()), '-', MONTH(birthdate), '-', DAY(birthdate)), '%Y-%m-%d') BETWEEN NOW() AND NOW() + INTERVAL 7 DAY
Обновление
Как указывает @GordonLinoff, это не сработает, если неделя пересекается с концом года, а дата рождения находится в начале января (например, NOW () = '2018-12-28' и дата рождения ='1985-01-02').Чтобы этот случай работал, необходимо также проверить дату рождения в YEAR(NOW())+1
, то есть
SELECT firstname, lastname, IF(housenumber_addition = "", CONCAT(housenumber,housenumber_addition ), housenumber_addition ) AS adres, sex
FROM customer
WHERE STR_TO_DATE(CONCAT(YEAR(NOW()), '-', MONTH(birthdate), '-', DAY(birthdate)), '%Y-%m-%d') BETWEEN NOW() AND NOW() + INTERVAL 7 DAY OR
STR_TO_DATE(CONCAT(YEAR(NOW())+1, '-', MONTH(birthdate), '-', DAY(birthdate)), '%Y-%m-%d') BETWEEN NOW() AND NOW() + INTERVAL 7 DAY