Ooo a to jest niezle rozwiazanie

proste i przejrzyste. Jednakze ma jedna wade. Nie zadziala w przypadku gdy bylby obecnie np. 30 grudnia 2009, a ktos obchodzilby urodziny za pare dni np. 01 stycznia. Wowczas argumenty
DATEDIFF bylyby nastepujace:
DATEDIFF('2009-01-01', '2009-12-30')
A warunek bylby nastepujacy:
DATEDIFF('2009-01-01', '2009-12-30') <= 7 AND DATEDIFF('2009-01-01', '2009-12-30') >= 0
DATEDIFF zwroci wynik -363, a -363 nie nalezy do przedzialu [0, 7].
Ale mozna to prosto poprawic dodajac kolejny warunek
OR
DATEDIFF(CONCAT(YEAR(NOW()) + 1, '-', MONTH(birthdate), '-', DAY(birthdate)), NOW()) <= 7 AND DATEDIFF(CONCAT(YEAR(NOW()) + 1, '-', MONTH(birthdate), '-', DAY(birthdate)), NOW()) >= 0
Nie ma tutaj znaczenia takze przestepnosc roku.
Zatem cale zapytanie ma postac:
Kod
SELECT login
FROM user
WHERE
(
DATEDIFF(CONCAT(YEAR(NOW()), '-', MONTH(birthdate), '-', DAY(birthdate)), NOW()) >= 0
AND
DATEDIFF(CONCAT(YEAR(NOW()), '-', MONTH(birthdate), '-', DAY(birthdate)), NOW()) <= 7
)
OR
(
DATEDIFF(CONCAT(YEAR(NOW()) + 1, '-', MONTH(birthdate), '-', DAY(birthdate)), NOW()) >= 0
AND
DATEDIFF(CONCAT(YEAR(NOW()) + 1, '-', MONTH(birthdate), '-', DAY(birthdate)), NOW()) <= 7
)
Uzylem kodu bo znaczniki [sql] rozkrzaczyly mi caly kod

Wszystkim dziekuje za pomoc