+ Antworten
Ergebnis 1 bis 6 von 6

Thema: Alter ausrechnen mit SQL

  1. #1
    Zen
    Zen ist offline
    TP-Junior Zen macht alles soweit korrekt Avatar von Zen
    Registriert seit
    Jan 2007
    Beiträge
    13

    Alter ausrechnen mit SQL

    Moin moin,

    Ich hab in einer DB abgespeichert wann meine Mitgleider Geburtstag haben und würde daraus nun gerne das Alter ausrechnen.

    Da ich auch Leute habe die vor 1970 geboren sind, nehme ich das Format Date:

    2005-02-20

    Jetzt will ich das alter ausrechnen. Bisher hab ichs mal so probiert:

    DATEDIFF(CURDATE(),`bday`) AS bday

    Das gibt mir die Anzahl der Tage aus die die Person schon lebt :mrgreen: . Ist aber doof weil ich so das Alter nicht genau bestimmen kann. Es gibt ja auch Schaltjahre. Wie kann ich das zuverlässig ausrechnen?

    MfG Zen

    MySQL AB :: MySQL 5.0 Reference Manual :: 12.5 Date and Time Functions

  2. #2
    TP-Senior Tropical ist auf einem guten Weg
    Registriert seit
    Feb 2006
    Ort
    Wien
    Beiträge
    185
    Code:
    SELECT geburtsdatum,(YEAR(CURRENT_DATE) - YEAR(Geburtsdatum)) - (DATE_FORMAT(CURRENT_DATE, '%d%m') < DATE_FORMAT(Geburtsdatum, '%d%m')) AS Alter FROM tabelle;
    Du musst lediglich tabelle abändern und gegebenenfalls die Spaltennamen ausbessern.

  3. #3
    Zen
    Zen ist offline
    TP-Junior Zen macht alles soweit korrekt Avatar von Zen
    Registriert seit
    Jan 2007
    Beiträge
    13
    Hm okd Danke

    Aber was ist mit Schaltjahren?

  4. #4
    TP-Senior Tropical ist auf einem guten Weg
    Registriert seit
    Feb 2006
    Ort
    Wien
    Beiträge
    185
    Zitat Zitat von Zen
    Hm okd Danke

    Aber was ist mit Schaltjahren?
    Da ich ja nicht so wie du über die Anzahl der Tage rechne, sondern MySQL direkt mit Jahren rechnen lasse, sollte da kein Problem sein.
    Denke ich jetzt mal, die Abfrage ist allerdings ungetestet.

  5. #5
    Zen
    Zen ist offline
    TP-Junior Zen macht alles soweit korrekt Avatar von Zen
    Registriert seit
    Jan 2007
    Beiträge
    13
    (YEAR(CURDATE()) - YEAR(`bday`)) - (DATE_FORMAT(CURDATE(), '%d%m') < DATE_FORMAT(`bday`, '%d%m')) AS age
    So sieth das jetzt bei mir aus. Kannst du noch erklären was es genau macht mit dem kleiner <
    ?

    Danke

    Edit: ok ich checks ned. Das vor dem Minus rechnet die Differenz der Jahre aus. Davon zeihst du dann [TAGZAHL][MONATSZAHL] ab??? Warum funtzt das
    Geändert von Zen (22.02.2007 um 16:30 Uhr)

  6. #6
    TP-Special Mod steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User Avatar von steffenk
    Registriert seit
    Feb 2005
    Ort
    Haan / NRW
    Beiträge
    12.869
    ok, aus aktuellem Anlass hier eine nachgereichte Erklärung

    (YEAR(CURDATE()) - YEAR(`bday`))
    aktuelles Jahr - Geburtsjahr

    Dann hat man das Alter, aber das ist das vom Ende des Jahres, also wenn der Geburtstag im aktuellen Jahr schon war.
    Hat man aber erst nach heute in diesem Jahr Geburtstag, ist man 1 Jahr jünger. Es wird hier geprüft:
    (DATE_FORMAT(CURDATE(), '%d%m') < DATE_FORMAT(`bday`, '%d%m'))

    Diese Abfrage liefert true(1) wenn das aktuelle Datum vor dem heutigen Datum liegt, sonst false(0). Das muss also nur abgezogen werden.


    TYPO3 · MySQLDumper · dislabs
    ·
    manche Mühlen mahlen schneller ...
    "Ich habe Rücken"
    Horst Schlämmer


+ Antworten

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51