dedlfix: Aktueller Tag

Beitrag lesen

echo $begrüßung;

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 :-))

Es ist weniger die zusätzliche Zeit-Angabe, die den Feldtyp TIMESTAMP ungeeigneter machen, als vielmehr der eingeschränkte Wertebereich.
TIMESTAMP: 1.1.1970 bis irgendwann im Jahr 2037.
DATE (mit oder ohne TIME): 1.1.1000 bis 31.12.9999 (garantiert. Werte vor 1000 ohne Garantie)

Die Aufgabe von TIMESTAMP-Feldern ist nicht das Speichern von Datums- und Zeitangaben sondern von (aktuellen) Zeitstempeln, um z.B. zu dokumentieren, wann eine Änderung der Daten stattgefunden hat.

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.

Einspruch! TIMESTAMP, DATETIME, etc. sind keine Typen wie String und Integer sondern Feldtypen. Ähnlich wie VARCHAR und CHAR. Beides sind Feldtypen mit teilweise unterschiedlichem Verhalten, die Werte darin sind aber immer Strings. Neben dem eingeschränkten Wertebereich hat ein TIMESTAMP-Feld gegenüber den anderen Datums- und Zeit-Feldtypen noch eine Funktionalität, die bei Eintragen und Ändern von Datensätzen zum Tragen kommt. Ansonsten wird in solch einem Feld ein ganz normaler Datums- und Zeit-Wert wie auch in DATETIME gespeichert. (Das interne Speicherformat kann dabei außer Acht gelassen werden.) Eine Typumwandlung ist nicht erforderlich. Alle auf Werte aus DATETIME-Feldern anwendbaren Funktionen lassen sich auch auf Werte aus TIMESTAMP-Feldern anwenden.

echo "$verabschiedung $name";