svenolo
Pixelschubser Threadstarter
Beiträge: 5 |
Hallo,
Ich möchte alle Kunden aus einer Datenbank auslesen die am heutigen Tag Geburtstag haben.
Folgende Abfrage an die MySQL-Datenbank:
$result=mysql_query('SELECT * from kunde where MONTH(Geburtsdatum)=MONTH(NOW()) order by Name');
Damit habe ich sämtliche Kunden, die in diesem Monat Geburtstag haben, soweit so gut.
folgende Abänderung sollte normalerweise auch alle die raussuchen, die eben genau an diesem heutigen Tag Geburtstag haben:
$result=mysql_query('SELECT * from kunde where MONTH(Geburtsdatum)=MONTH(NOW()) and DAY(Geburtsdatum)=DAY(NOW()) order by Name');
Aber aus irgendeinen Grund funktioniert die DAY()-Funktion gar nicht, habe es auch schon einzelnd ohne den ganzen Glimm Bimms herum probiert.Leider nix.
Ich habe dann auch versucht mir zunächst mittels der ersten Abfrage alle Kunden zu holen, die in diesen Monat Geburtstag haben, um dann in PHP aus der Variablen $ds[Geburtsdatum] irgendwie den Tag rauszuziehen, aber auch dass klappte nicht, wäre aber auch unnötig umständlich. Man muss das in MySQL doch schon realisieren können. Hängt wohl irgendwie mit dem Datenbanksystem zu tun, aber ein Funktion DAY() muss es doch immer geben oder?
|
Ticonderoga
Pixelschubser
Beiträge: 4 |
Hi, also, ich hätte hier eine Lösung.
Ich meine, dass es am sinnvollsten ist, derartige Datum-Angaben als Klartext und nicht als Timestamp zu speichern, weil es Dir, wenn du die Relation (Tabelle) manuell administrierst sowieso ein besseres vorstellungsvermögen liefert, da die meisten Menschen, inklusive mir, bei timestamps immer Probleme haben, das Datum auf unseren Kalender zu übertragen. Egal, zurück zum Thema:
Also, nehmen wir an, Du speicherst die Geburtstage in der Form YYYY.MM.DD so ab.
Dann könntest Du eine SQL-Anfrage beispielsweise so formulieren:
$sql="SELECT k.name, k.vorname, k.email FROM kunde k WHERE k.geburtsdatum LIKE '%".date("m.d", time())." ' ";
Ich habe es jetzt nicht ausprobiert, aber es dürfte funktionieren. wenn Du den LIKE-Operator verwendest, dann ist das %-Zeichen ein Wildcard, welches für beliebig viele Zeichen davor - in unserem Fall also das Jahr - steht.
|