Ich meine, es gab vor einiger Zeit mal einen Thread, wo es darum ging, wie man das Alter am besten berechnen kann, aber ich find ihn nicht mehr. Falls mich jemand darauf stoßen könnte wär's vermutlich schon die "Lösung".
Die Frage ist: Wenn ich Geburtstage in Form von DATE - Feldern gespeichert habe, wie berechne ich jetz das Alter am besten?
Für meine Zwecke wäre es nicht so schlimm, wenn's nicht auf den Tag stimmt, denn ich will eigentlich nur das Durchschnittsalter oder vllt. noch ein Histogramm.
*edit*: DATEDIFF liefert den gleichen Fehler wie DATE_DIFF...
Mein erster Ansatz war mit DATEDIFF zu arbeiten àla:
Das sollte mir das Alter in Tagen ausgeben. Keine sehr schöne Lösung, nur ein erster Ansatz. Eigenartigerweise funktioniert nicht mal das:
Obwohl ich mit MySQL 4.1.22 aktuell genug bin und das Beispiel ausm Manual
ja auch funktioniert.
Bin ich irgendwie grade massiv blockiert, dass ich nich sehe warum das nich geht?
Zum Vergleich, ein
liefert:
also schon die richtigen Datentypen und das richtige Feld ansich.
Nuja, besser wär's vielleicht eh, gleich mit den Jahren zu rechnen. Also die Differenz der Jahre, falls Tag und Monat schon überschritten sind, sonst eins weniger. Wie krieg ich das am performantesten hin?
Die Frage ist: Wenn ich Geburtstage in Form von DATE - Feldern gespeichert habe, wie berechne ich jetz das Alter am besten?
Für meine Zwecke wäre es nicht so schlimm, wenn's nicht auf den Tag stimmt, denn ich will eigentlich nur das Durchschnittsalter oder vllt. noch ein Histogramm.
*edit*: DATEDIFF liefert den gleichen Fehler wie DATE_DIFF...
Mein erster Ansatz war mit DATEDIFF zu arbeiten àla:
Code:
SELECT DATEDIFF(CURDATE(), `bday`) FROM `users`;
Code:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '( CURDATE( ) , `bday` ) FROM `fpms_userdaten` LIMIT 0, 30' at line 1
Obwohl ich mit MySQL 4.1.22 aktuell genug bin und das Beispiel ausm Manual
Code:
SELECT DATEDIFF('1997-12-31 23:59:59','1997-12-30');
Bin ich irgendwie grade massiv blockiert, dass ich nich sehe warum das nich geht?
Zum Vergleich, ein
Code:
SELECT CURDATE(), `bday` FROM `users`;
Code:
CURDATE( ) bday
2006-09-14 1981-04-06
2006-09-14 1996-12-31
2006-09-14 1922-01-19
also schon die richtigen Datentypen und das richtige Feld ansich.
Nuja, besser wär's vielleicht eh, gleich mit den Jahren zu rechnen. Also die Differenz der Jahre, falls Tag und Monat schon überschritten sind, sonst eins weniger. Wie krieg ich das am performantesten hin?
Zuletzt bearbeitet: