Hallo,
also zuerst: Ein TIMEstamp ist für die Speicherung von GeburtsDATEN wie bereits erwähnt nicht besonders sinnvoll, da es Datum _und_ Zeit abspeichert. Ich glaube allerdings kaum, dass der Geburtszeitpunkt auf deiner Seite von Interesse ist :-))
Ansonsten musst du bei den mySQL-Abfragen auf die Datentypen achten. Sowohl NOW() als auch geburtsdatum sind vom Typ TIMESTAMP, während MONTH und DAYOFMONTH auf DATE-Typen arbeiten. Die Konvertierung erfolgt einfach mit DATE(); das aktuelle Datum erhältst du statt über DATE(NOW()) auch schneller mit CURRENT_DATE(). Ansonsten sollte dein Ansatz absolut korrekt arbeiten.
Ich würde an deiner Stelle das Attribut geburtsdatum in einen DATE-Typ umwandeln (ALTER TABLE ...). Dann lautet die Abfrage einfach:
SELECT username
FROM user
WHERE month(geburtsdatum) = month(current_date()) AND dayofmonth(geburtsdatum)=dayofmonth(current_date())
Ansonsten musst du 'geburtsdatum' bei jeder Abfrage erst in ein DATE-Objekt konvertieren:
SELECT username
FROM user
WHERE month(date(geburtsdatum)) = month(current_date()) AND dayofmonth(date(geburtsdatum))=dayofmonth(current_date())
Viele Grüße,
Johannes Röckert