Geburtsdaten MySQL

Autor: Christian Ahmer, erstellt: 26.08.2010, zuletzt geändert: 16.09.2014
Kategorien: Mysql

Für eine kleine Anwendung, wo es darum geht, die nächsten Geburtstage herauszufinden, habe ich einmal einige halbwegs interessante MySQL Queries gefunden. Um in MySQL relativ zum jeweils aktuellen, also heutigen Datum die bereits vergangenen Geburtstage bzw. die noch ausstehenden Geburtstage herauszufinden, kann man folgende Queries verwenden, wenn man davon ausgeht, dass die Datumsspalte der Datenbank nach folgendem Schema aufgebaut ist: JAHR-MONAT-TAG also z.B. 2000-01-21 falls Jemand am 21.Januar 2000 geboren wurde.

Für bereits vergangene Geburtstage in MySQL:

SELECT *
FROM personen WHERE
CONCAT(Year(CURDATE()),'-',SUBSTR(geburtsdatum,6,2),'-',SUBSTR(geburtsdatum,9,2))
< NOW()
ORDER BY CONCAT(SUBSTR(geburtsdatum,6,2),SUBSTR(geburtsdatum,9,2)) ASC

Für noch ausstehende, also noch kommende Geburtstage:

SELECT id,vorname,nachname,geburtsdatum
FROM personen WHERE
CONCAT(Year(CURDATE()),'-',SUBSTR(geburtsdatum,6,2),'-',SUBSTR(geburtsdatum,9,2))
>= NOW()
ORDER BY CONCAT(SUBSTR(geburtsdatum,6,2),SUBSTR(geburtsdatum,9,2)) ASC