phpbar.de logo

Mailinglisten-Archive

Re: alter aus geburtsdatum?
Archiv Mailingliste mysql-de

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: alter aus geburtsdatum?



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


Home | Main Index | Thread Index

php::bar PHP Wiki   -   Listenarchive