Johannes Röckert: Aktueller Tag

Beitrag lesen

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