Karsten: mySQL Datumsabfrage

Hallo,
ich habe eine Tabellenspalte in der Geburtsdaten gespeichert sind.
Format YYYY-MM-DD
Die Abfrage die ich nun brauche, soll - vom aktuellen Datum ausgehend - alle Leute rausgeben, die zwischen z.B. 20 und 30 Jahre alt sind.
Hat jemand eine Idee? Meine Suche im mySQL manual hat mir nicht weitergeholfen..

Etwas Hilfe wäre Klasse,
Karsten

  1. Hi,

    also ganz fertig basteln kann ich's dir nicht, ich sag dir nur mal was ich im MySQL-Manual finde:
    Wenn du da das tatsächlich Geburtsdatum (also 13.03.19xx) stehen hast, dann kannst du dir vielleicht mit der
    DATE_ADD(date,INTERVAL expr type)  -Funktion behelfen:

    SELECT ... FROM ...
    WHERE NOW() BETWEEN DATE_ADD(geburtstag, INTERVAL 20 YEAR) AND DATE_ADD(geburtstag, INTERVAL 30 YEAR)

    Keine Ahnung, obs wirklich funktioniert.

    MfG
    Rouven

    --

    -------------------
    ss:) zu:) ls:& fo:) de:< va:{ ch:? sh:) n4:( rl:? br:$ js:| ie:) fl:(
    1. Hallo Rouven,

      danke für den Tip - diese Manual-Sektion werde ich mir nochmal
      genauer ansehen.

      Gruß,
      Karsten

      1. Mit dieser Abfrage habe ich's nun hinbekommen:

        $query = "SELECT NAME, GEBURTSDATUM, CURRENT_DATE,(YEAR(CURRENT_DATE)-YEAR(GEBURTSDATUM)) - (RIGHT(CURRENT_DATE,5)<RIGHT(GEBURTSDATUM,5)) AS ALTER FROM tbl_meinetabelle";

        _____________________________________
        Falls jemand sich dafür interessiert:

        NAME:
        Namen-Spalte

        GEBURTSDATUM:
        GDatum-Spalte

        ALTER:
        Alter-Spalte (die bei der Abfrage von mySQL generiert wird)

        tbl_meinetabelle:
        Tabellenname
        _____________________________________

        Vielen Dank für's Mitdenken =)

        1. so bekommst du das alter aller einträge.
          ABER:
          Die Abfrage die ich nun brauche, soll - vom aktuellen Datum ausgehend - alle Leute rausgeben, die zwischen z.B. 20 und 30 Jahre alt sind.

          wie soll das OHNE where bedingung funktionieren???

    2. SELECT ... FROM ...
      WHERE NOW() BETWEEN geburtstag - INTERVAL 20 YEAR AND geburtstag -INTERVAL 30 YEAR

      1. tschuldigung, man sollte erst lesen.

        SELECT ... FROM ...
        WHERE NOW() BETWEEN geburtstag - INTERVAL 20 YEAR AND geburtstag -INTERVAL 30 YEAR

        ist falsch, da der geburtstag ja schon 20 bis 30 jahre her ist. von diesem sollte man nicht noch einmal 20 oder 30 jahre abziehen, dann kommt man erst recht nicht auf das heutige datum.

        SELECT ... FROM ...
        WHERE NOW() BETWEEN geburtstag + INTERVAL 20 YEAR AND geburtstag + INTERVAL 30 YEAR

        oder

        SELECT ... FROM ...
        WHERE geburtstag BETWEEN NOW() - INTERVAL 20 YEAR AND NOW() -INTERVAL 30 YEAR