Gebutzstagekalender
Mark
- datenbank
Hallo,
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.
Any ideas?
Danke,
Mark
Hi, hallo
du hast dein Problem doch schon erkannt, kannst es aber nicht formulieren.
Dein Problem sind die Jahreszahlen ...
Du solltest also versuchen !_programmatorisch_! auf dieselbe Jahreszahl kommen bzw. die ware Jahreszahl eliminieren (auf 00 setzen)
Ermittle die Tagesanzahl für den Geburtstag und NOW() vom ersten Tag des jeweiligen Jahres an und vergleiche diese in Kombination dann mit deinem "n"
Tschau, tschüß,
Frank
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