Thomas Luethi: Gebutzstagekalender

Beitrag lesen

Hallo Mark,

ich möchte aus einer MySQL-Datenbank, in der in einem eine DATE-Field das Geburtsdatum hinterlegt ist, Liste mit diesen Personen, die in den nächsten n Tagen Gebutzstag haben.

Das Problem ist, dass "... WHERE Gebdat-NOW()<n" nicht funktioniert, da das Geburtsdatum ja in der Vergangenheit liegt, das Geburtstagsdatum aber in der Zukunft liegt.

Ich bezweifle, dass Du das ueber eine nette kurze SQL-Abfrage
loesen kannst, solange die Daten im DATETIME oder TIMESTAMP Format
vorliegen, weil dort ja die Jahreszahlen mit dabei sind.

Als Loesungsansatz wuerde ich vorschlagen:

Mach eine zusaetzliche Spalte: Der wievielte Tag des Jahres
ist der Geburtstag.
PHP-Funktion: date("z");
Der 23. Januar ist der 23. Tag.
Der 4. Februar ist der 35. Tag.
Differenz: 12 Tage.

Diese Differenz duerfte man ziemlich einfach in einem SQL Statement einbauen koennen.

Dann bleiben noch als kleine Huerden:
* Schaltjahre - der 3. Maerz ist der 62. bzw. 63. Tag des Jahres.
  (Hier IMHO nicht so wichtig, solange Du die n Tage genug gross machst.)
* Der Jahreswechsel - der 5. Januar ist 7 Tage vom 29. Dezember entfernt.

Die eigentliche Programmierarbeit lasse ich Dich selbst machen:-)

Uebersicht der Datums- und Zeitfunktionen in PHP:
http://www.php.net/manual/de/ref.datetime.php

Die Funktion date():
http://www.php.net/manual/de/function.date.php

HTH, mfg
Thomas