DAS zentrale Feature unseres Informationssystem ist eine Geburtstagsliste *gähn*. Ich habe eine Tabelle und möchte nun Geburtstage ab heute mit sql herausselecten. Diese birthday list hat folgende Probleme:
- Ich kann sie nicht nach Geburtstagen ordnen, weil das Jahr keine Rolle spielt.
- Ich kann auch nicht DAYOFYEAR verwenden, weil es ein Gnusch mit den Schalttagen gibt.
- Es muss zyklisch sein, so dass Ende Jahr die Geburtstage vom Januar angezeigt werden.
Nun, die rettende Idee war, das Datum umzufomatieren. Also der 26.10.2006 zum 1026 zu machen und danach zu ordnen. Der Rest ist gna:
SELECT id, name, vorname, geburtsdatum
FROM personen_complete
WHERE geburtsdatum IS NOT NULL
ORDER BY
IF( DATE_FORMAT(geburtsdatum,'%m%d') >= DATE_FORMAT(CURDATE(),'%m%d'),0,1),
DATE_FORMAT(geburtsdatum,'%m%d') ASC,
name, vorname
FROM personen_complete
WHERE geburtsdatum IS NOT NULL
ORDER BY
IF( DATE_FORMAT(geburtsdatum,'%m%d') >= DATE_FORMAT(CURDATE(),'%m%d'),0,1),
DATE_FORMAT(geburtsdatum,'%m%d') ASC,
name, vorname