Vinzenz Mai: mysql: aus DATE Alter ermitteln?

Beitrag lesen

Hallo King,

Eventuell geht was mit TIMEDIFF(expr,expr2), vgl. auch http://photomatt.net/2003/12/08/calculate-age-in-mysql/, alles nicht sehr vertrauenserweckend.

doch, doch. Das von Dir verlinkte ist prinzipiell nichts anderes als der erste Benutzerkommentar. Photo Matts erster Kommentar, der hier von Tobias wiedergegeben wird, habe ich ja mit einem anderen Beispiel als Photo Matt selbst widerlegt. Solche Tagesrechnereien scheitern _immer_ an den Schaltjahren - es sei denn, man berücksichtigt die doch recht komplizierten Regeln.

Und das ist Blödsinn. Die Frage läuft stets darauf hinaus: Hatte die Person im aktuellen Jahr bereits Geburtstag

Wenn die Person im aktuellen Jahr bereits Geburtstag hatte
    Alter = Differenz der beiden Jahresanteile
Sonst
    Alter = Differenz der beiden Jahresanteile - 1
Ende Wenn

Das Problem ist damit reduziert auf die Feststellung: Ist der Geburtstag in diesem Jahr bereits erreicht.

Formatiert man den Monats- und Tagesanteil der beiden Datumsangaben in der Form

MMDD

so ist dies mit einem einfachen Vergleich erledigt. Dabei ist es unerheblich, ob der Monats- und Tagesanteil als Zeichenkette oder als Ganzzahl betrachtet wird.

Nichts anderes erfolgt im ersten Benutzerkommentar. Dieser verkompliziert die Sache nur dadurch, dass er noch berücksichtigt, dass date1 > date2 sein kann oder umgekehrt. Diesen Fall läßt Photo Matt außen vor.

Freundliche Grüße

Vinzenz