Wie berechne ich das alter einer Person, wenn ich den Geburtstag kenne (mit MYSQL)

7 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

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

Illona41  15.10.2011, 11:47

wo bekommt man den denn?

0

schon vergessen????? man kann so einfache dinge ganz einfach mit dem Kopf ausrechnen (zur Not auch mit Papier und Stift als Hilfe.....)

sponge9394 
Fragesteller
 15.10.2011, 11:50

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

0
toterbiber  15.10.2011, 11:50

Schwachsinnige Antwort, ich glaube du hast keinerlei Ahnung was MySQL ist.

0

Eigendlich sollte DATEDIFF funtionieren

http://www.w3schools.com/sql/func_datediff_mysql.asp

ansosnten versuchs mal mit einer einfachen subtraktion: select (current_date( ) - geburtsdatum)

sponge9394 
Fragesteller
 15.10.2011, 11:51

stimmt... aber ich bekomme immer nur das alter in Tagen

bei SQL konnte ich YYYY davor schreiben und bekam dann das alter in Jahren

0