Geburtstagsliste mit MySQL

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

Geburtstag!

Eigentlich wollte ich ja nur noch alle zwei Jahre Geburtstag feiern, aber weil dieses Jahr eine Zweierpotenz an der Reihe ist dachte ich, ok, machmas nochmals. Und er war gut (Siehe Postingzeit 🙂 ). Ich bekam den schönsten Kuchen, den ich je gesehen habe, gnädigerweise ohne Kerzen und dann wurde mir auch noch der Mond geschenkt.