Mailinglisten-Archive |
Markus Rietzler schrieb am Mittwoch, den 14. Juli 1999: > 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? PERIOD_DIFF rechnet nur in Jahren & Monaten (deswegen auch die Umformatierung per DATE_FORMAT), und da ist die Zeitspanne zwischen 1999-07 und 1980-07 genau 19 Jahre. Daß vom Monatstag her noch ein paar Tage bis zum Geburtstag sind, fällt dabei unter den Tisch. Da beim Geburtsdatum ohne den Tag quasi so gerechnet wird, als wenn's der Monatserste wäre (20 Tage früher), kannst Du auch einfach diese 20 Tage vom aktuellen Datum abziehen: SELECT FLOOR( PERIOD_DIFF( DATE_FORMAT( DATE_SUB( CURRENT_DATE ,INTERVAL DAYOFMONTH('1980-07-20') DAY ,'%Y%m' ) ,DATE_FORMAT('1980-07-20','%Y%m') ) / 12 ) AS Alter_in_J; > 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; Na, weil Du irrtümlich annimmst, daß PERIOD_DIFF entgegen der Beschreibung im Handbuch auch mit JahrMontagTag rechnet. Es nimmt aber wirklich nur Angaben der Form JahrMonat! Das sind in dem Fall nun das Jahr 199907 im Monat 14 und das Jahr 198007 im Monat 14 - eine Differenz von 19 Jahrhunderten oder 22800 Monaten! :) Ciao, Martin PS: Seufz, ich trau's mich ja kaum mehr zu sagen. Aber warum denn jedesmal ein komplettes Zitat der Originalmail? Die hat doch schon jeder bekommen, so wie Du (denn Du antwortest ja darauf) ... -- 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