Jak stwierdzili inni, w porównaniu należy zignorować rok. Funkcja DAYOFYEAR() jest jednym ze sposobów, aby to zrobić.
Oto szybkie rozwiązanie z czubka mojej głowy. Zwróci wszystkie daty urodzin w ciągu następnych 10 dni, nawet jeśli jest późny grudzień, a urodziny są w przyszłym roku.
NIE obsługuje prawidłowo lat przestępnych, więc będzie wyłączony o 1 dzień w przypadku urodzin na początku marca, jeśli ten rok jest rokiem przestępnym, a dana osoba nie urodziła się w roku przestępnym lub na odwrót. Lata przestępne powodują również, że urodziny na początku stycznia pojawiają się czasami w jeden dzień wolny pod koniec grudnia. Jeśli ktoś chce dodać korektę roku przestępnego, nie krępuj się :)
SELECT birthdate
FROM Anniversaries
WHERE dayofyear(birthdate) - dayofyear(curdate()) between 0 and 10
or dayofyear(birthdate) + 365 - dayofyear(curdate()) between 0 and 10;