This one handles February 29 - treating March 1st as the celebration day in non-leap years.
SELECT u.name
FROM users u INNER JOIN friendships f ON (f.user_id = u.id)
WHERE f.friend_id = 6 -- whatever your id is
AND (
MONTH(u.birthdate) = MONTH(NOW())
AND DAY(u.birthdate) = DAY(NOW())
) OR (
MONTH(c.birthdate) = 2 AND DAY(c.birthdate) = 29
AND MONTH(NOW()) = 3 AND DAY(NOW()) = 1
AND (YEAR(NOW()) % 4 = 0)
AND ((YEAR(NOW()) % 100 != 0) OR (YEAR(NOW()) % 400 = 0))
)
Having not see your table structure, I just made a guess about how you handle friendship links
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…