Geburtstagsabfrage
Robert
- datenbank
Hi,
Habe die Geburtsdaten von Personen in einer Datenbank gespeichert (mysql). Als Typ "date".
Jetzt würde ich gerne per php ausgeben, ob jemand geburtstag hat.
leider geht es weder so
"SELECT * FROM mitglieder WHERE mggebdat='%.date("m-d")."%'"
noch so
"SELECT * FROM mitglieder WHERE DAY(mggebdat)=".date("d")." AND MONTH(mggebdat)=".date("m");
glaube, mysql unterstützt day und month nicht...
jetzt bin ich mit meinem latein am ende.
wisst ihr eine funktionierende lösung?
danke,
robert
n'abend,
Habe die Geburtsdaten von Personen in einer Datenbank gespeichert (mysql). Als Typ "date".
Jetzt würde ich gerne per php ausgeben, ob jemand geburtstag hat.
"SELECT * FROM mitglieder WHERE mggebdat='%.date("m-d")."%'"
ein (unschöner aber funktionierender ansatz wäre)
"SELECT * FROM mitglieder WHERE mggebdat LIKE '%.date("m-d")."%'"
merke: LIKE statt =
(diese query wird unweigerlich länger dauern. wenn du nen index auf der spalte hast ist nicht gewährleistet, dass der effizient genutzt wird, da der LIKE mit einem wildcard startet (also der anfang des indexierten wertes nicht geprüft werden kann) im plötesten fall gibt das nen full-table-scan...)
hier gibts infos zu den funktionen ;) date and time functions
weiterhin schönen abend...
Ups, sorry....im Code hab ich das like drinnen, hab aber abgeschrieben statt kopiert und dann das like vergessen....mysql meint, so eine Operation is beim Typ date nicht erlaubt....
robert.
n'abend,
Habe die Geburtsdaten von Personen in einer Datenbank gespeichert (mysql). Als Typ "date".
Jetzt würde ich gerne per php ausgeben, ob jemand geburtstag hat.
"SELECT * FROM mitglieder WHERE mggebdat='%.date("m-d")."%'"ein (unschöner aber funktionierender ansatz wäre)
"SELECT * FROM mitglieder WHERE mggebdat LIKE '%.date("m-d")."%'"merke: LIKE statt =
(diese query wird unweigerlich länger dauern. wenn du nen index auf der spalte hast ist nicht gewährleistet, dass der effizient genutzt wird, da der LIKE mit einem wildcard startet (also der anfang des indexierten wertes nicht geprüft werden kann) im plötesten fall gibt das nen full-table-scan...)
hier gibts infos zu den funktionen ;) date and time functions
weiterhin schönen abend...
n'abend,
Ups, sorry....im Code hab ich das like drinnen, hab aber abgeschrieben statt kopiert und dann das like vergessen....mysql meint, so eine Operation is beim Typ date nicht erlaubt....
also ich weiss ja nicht... aber eins meiner scripts macht das exakt so... und da wird nicht gemosert.. ?!
für den anderen ansatz:
"MONTH(date)
Returns the month for date, in the range 1 to 12.
mysql> SELECT MONTH('1998-02-03');
-> 2"
da gibt es keine führende 0 also statt date('m') (welches 04 liefert) date('n') (welches 4 liefert) probieren. (selbes für den tag.. da ist es statt 'd' glaub 'j' lässt sich ja auf php.net schnell finden ;))
weiterhin schönen abend...
Hallo globe!
für den anderen ansatz:
"MONTH(date)
Returns the month for date, in the range 1 to 12.
mysql> SELECT MONTH('1998-02-03');
-> 2"da gibt es keine führende 0 also statt date('m') (welches 04 liefert)
date('n') (welches 4 liefert) probieren. (selbes für den tag.. da ist
es statt 'd' glaub 'j' lässt sich ja auf php.net schnell finden ;))
Warum PHP für MySQL-Abfragen missbrauchen?
Warum nicht einfach DAY(NOW()) UND MONTH(NOW()) benutzen?
℆, ℒacℎgas
echo $begrüßung;
leider geht es weder so
"SELECT * FROM mitglieder WHERE mggebdat='%.date("m-d")."%'"
noch so
"SELECT * FROM mitglieder WHERE DAY(mggebdat)=".date("d")." AND MONTH(mggebdat)=".date("m");
Auch wenn ich mich wiederhole: Datenbank-Probleme sollten nicht mit Script-Code verfälscht werden. Was genau sendest du an den Server? Baue ggf. die Query zuerst in einem String zusammen und lass dir diesen ausgeben. Welche Fehlermeldungen kommen und was verstehst du an ihnen nicht? Wenn keine kommen, was kommt dann?
glaube, mysql unterstützt day und month nicht...
Befrage dazu das Handbuch. Das Kapitel in dem es um "Functions" und speziell "Date and Time Functions" geht weiß die Antwort.
wisst ihr eine funktionierende lösung?
SELECT * FROM test WHERE DAY(datum) = DAY(NOW()) AND MONTH(datum) = MONTH(NOW())
echo "$verabschiedung $name";