Mailinglisten-Archive |
ich habe in der zwischenzeit folgenden ausdruck "gefunden" select (TO_DAYS(curdate())+1 - TO_DAYS('1969-07-11')) / 365.25 wenn ich deinen ausdruck nehme und z.b. SELECT FLOOR( PERIOD_DIFF( DATE_FORMAT(CURRENT_DATE,'%Y%m') ,DATE_FORMAT('1908-07-20','%Y%m') ) / 12 ) AS Alter_in_J; abfrage, dann kommen nur 19 jahre raus, das stimmt aber nicht (18 waere der preis gewesen), oder habe ich irgendeinen denkfehler? richtig waere da eher, warun ich jetzt durch 1200 teilen muss, keine ahnung... SELECT floor( PERIOD_DIFF( DATE_FORMAT(CURRENT_DATE,'%Y%m%d') ,DATE_FORMAT('1980-07-14','%Y%m%d') ) / 1200 ) AS Alter_in_J; mfg Markus Rietzler * Wuppertal-Forum | Wuppertal-Navigator * http://www.wuppertal-forum.de * http://www.wuppertal-navigator.de * eMail: markus.rietzler_(at)_wuppertal-forum.de Ronsdorfer Strasse 14 Fon: 0202.42 08 30 42119 Wuppertal Fax: 0202.242 24 66 Mobil: 0171.480 77 82 > -----Original Message----- > From: Martin Ramsch [mailto:m.ramsch_(at)_computer.org] > Sent: Wednesday, July 14, 1999 3:01 PM > To: mysql-de_(at)_lists.4t2.com > Subject: Re: alter aus geburtsdatum? > > > 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 > > --- *** 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