Mailinglisten-Archive |
Markus Rietzler schrieb am Samstag, den 10. Juli 1999: > wie kann ich aus einem gegebenen geburtsdatum das alter einer person > berechnen. Das kommt jetzt ganz darauf an, wie Du dieses Alter willst: in Jahren, in Monaten, Tagen oder Sekunden? Nehmen wir mal an, das Geburtsdatum geb stammt aus einer Tabelle und ist vom Feldtyp DATE. WICHTIG: Alle Formeln, die Unix-Timestamps benutzen, funktionieren nur mit Daten >= 1.1.1970 richtig. Also besser auf Unix-Timestamps verzichten, wenn möglich! Nicht ganz so wichtig: Auch die Funktionen TO_DAYS und FROM_DAYS haben Grenzen, nämlich den Anfangspunkt des gregorianischen Kalenders 1582. Daten davor lassen sich mit diesen Funktionen nicht handhaben. * Alter in Sekunden: # Daten >=1.1.1970! SELECT UNIX_TIMESTAMP()-UNIX_TIMESTAMP('1969-05-06') AS Alter_in_s FROM ... * Alter in Stunden ("HH:MM:SS"): # Daten >=1.1.1970! SELECT SEC_TO_TIME( UNIX_TIMESTAMP()-UNIX_TIMESTAMP('1969-05-06') ) AS Alter_in_h FROM ... * Alter in Tagen: SELECT TO_DAYS(CURRENT_DATE)-TO_DAYS('1969-05-06') AS Alter_in_T; Achtung: Die Funktion FROM_DAYS ist nicht dafür geeignet, um diese Alter in Tagen in ein Datum der Form YYYY-MM-DD umzurechnen, da es ein Datum vor 1582 wäre. Auch wenn es evtl. funktioniert, warnt das MySQL-Handbuch davor! * Alter in Monaten: (Auch hier besser nicht mit Tagen rechnen, weil Monate ja nicht gleich lang sind.) SELECT PERIOD_DIFF( DATE_FORMAT(CURRENT_DATE,'%Y%m') ,DATE_FORMAT('1969-05-06','%Y%m') ) AS Alter_in_M; * Alter in Jahren: # Als Kommazahl. SELECT PERIOD_DIFF( DATE_FORMAT(CURRENT_DATE,'%Y%m') ,DATE_FORMAT('1969-05-06','%Y%m') ) / 12 AS Alter_in_J; # Als ganze Zahl SELECT FLOOR( PERIOD_DIFF( DATE_FORMAT(CURRENT_DATE,'%Y%m') ,DATE_FORMAT('1969-05-06','%Y%m') ) / 12 ) AS Alter_in_J; Diese letzten beiden Versionen sind in meinen Augen die besten. Ciao, Martin -- Martin Ramsch <m.ramsch_(at)_computer.org> <URL: http://home.pages.de/~ramsch/ > PGP KeyID=0xE8EF4F75 FiPr=52 44 5E F3 B0 B1 38 26 E4 EC 80 58 7B 31 3A D7 --- *** Abmelden von dieser Mailingliste funktioniert per E-Mail *** an mysql-de-request_(at)_lists.4t2.com mit Betreff/Subject: unsubscribe
php::bar PHP Wiki - Listenarchive