mySQL Datumsabfrage
Karsten
- datenbank
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
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
Hallo Rouven,
danke für den Tip - diese Manual-Sektion werde ich mir nochmal
genauer ansehen.
Gruß,
Karsten
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 =)
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???
SELECT ... FROM ...
WHERE NOW() BETWEEN geburtstag - INTERVAL 20 YEAR AND geburtstag -INTERVAL 30 YEAR
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