Seperti yang telah dinyatakan orang lain, Anda harus mengabaikan tahun dalam perbandingan Anda. Fungsi DAYOFYEAR() adalah salah satu cara untuk melakukannya.
Inilah solusi cepat dari atas kepala saya. Ini akan mengembalikan semua ulang tahun dalam 10 hari ke depan, bahkan jika itu akhir Desember dan ulang tahun tahun depan.
Ini TIDAK menangani tahun kabisat dengan benar, sehingga akan libur 1 hari untuk ulang tahun awal Maret jika tahun ini adalah tahun kabisat dan orang tersebut tidak lahir pada tahun kabisat atau sebaliknya. Tahun kabisat juga akan menyebabkan ulang tahun awal Januari terkadang muncul satu hari libur di akhir Desember. Jika ada yang ingin menambahkan koreksi tahun kabisat, silakan :)
SELECT birthdate
FROM Anniversaries
WHERE dayofyear(birthdate) - dayofyear(curdate()) between 0 and 10
or dayofyear(birthdate) + 365 - dayofyear(curdate()) between 0 and 10;