Wie berechne ich das alter einer Person, wenn ich den Geburtstag kenne (mit MYSQL)
ich habe es mit der Datediff() funktion probiert, aber die scheint nur bei sql zu funktionieren und nicht bei mysql
kann mir da jemand helfen ?
7 Antworten
Falls es taggenau sein soll (d.h. das Alter immer am Tag nach dem Geburtstag um eins erhöht werden soll), müsste folgende Abfrage passen:
SELECT YEAR(NOW()) - YEAR(geburtsdatum) - (32 * MONTH(NOW()) + DAY(NOW()) <= 32 * MONTH(geburtsdatum) + DAY(geburtsdatum));
Soll bereits am Geburtstag selbst weitergezählt werden, musst du statt dem Kleiner-Gleich-Zeichen ein Kleiner-Zeichen einsetzen.
Statt 32 kannst du auch jede beliebige größere Zahl verwenden; es muss nur beide Male die selbe sein. ;-)
Das Alter in Tagen bekommst du folgendermaßen:
mysql: SELECT DATEDIFF(NOW(),'1998-11-03');
+-------------------------------------+
| DATEDIFF('2011-10-15','1998-11-03') |
+-------------------------------------+
| 4729 |
+-------------------------------------+
1 row in set (0.01 sec)
Oder in (vollen) Jahren:
mysql: SELECT FLOOR(DATEDIFF(NOW(),'1998-11-03') / 365.25);
+----------------------------------------------+
| FLOOR(DATEDIFF(NOW(),'1998-11-03') / 365.25) |
+----------------------------------------------+
| 12 |
+----------------------------------------------+
1 row in set (0.00 sec)
Achtung: Bei dieser Art der Schaltjahr-Berücksichtigung kann es zu Ungenauigkeiten von einem Tag kommen.
wie wärs mit dem guten alten kopfrechner
schon vergessen????? man kann so einfache dinge ganz einfach mit dem Kopf ausrechnen (zur Not auch mit Papier und Stift als Hilfe.....)
Schwachsinnige Antwort, ich glaube du hast keinerlei Ahnung was MySQL ist.
ich hatte gefragt, wie man es mit mysql macht...
ich rechne es deshalb nicht mit dem Kopf, weil ich eine Software programmieren will, die es anzeigt und da es sehr Mühsam wäre jeden Tag mehrere tausend Geburtstage auszurechnen mache ich es nicht mit dem Kopf
... bitte fragen richtig lesen
Eigendlich sollte DATEDIFF funtionieren
http://www.w3schools.com/sql/func_datediff_mysql.asp
ansosnten versuchs mal mit einer einfachen subtraktion: select (current_date( ) - geburtsdatum)
stimmt... aber ich bekomme immer nur das alter in Tagen
bei SQL konnte ich YYYY davor schreiben und bekam dann das alter in Jahren