Heutige Geburtstage auslesen
x-plosiv
- datenbank
hallo zusammen
ich finde mal wieder die lösung meines problem nirgends. ich hoffe jemand von euch kann mir weiterhelfen. besten dank im voraus
ich möchte gerne aus einer mysql 4.xx datenbank die heutigen geburtstage ausgeben
ich habe es so versucht:
...WHERE DAYOFYEAR(datum) = DAYOFYEAR(now())....
jedoch gibt es mir nicht die richtigen daten aus.
ich habe zb. 2 einträge mit 19.11.xx jedoch wird nur der 2. eintrag angezeigt, dafür noch die 3 nächsten vom 20.11 (wären aber 5 am 20.11.xx)
ich verstehe es nicht. warum ist da so? was mache ich falsch?
das datenbankfeld ist ein date und die einträge sind ohne zeit.
Hello,
welchen Tag und welchen Monat wir heute gaben, weißt Du ja selber.
Und die vergleichst Du dann mit der Datenbank
http://dev.mysql.com/doc/mysql/en/Date_and_time_functions.html
select vorname, nachname, gebdat from personal where day(begdat)='19' and month(gebdat)='11';
Kann sein, dass der Vergelich numerisch sein muss, das habe ich jetzt für mySQL nicht auswendig.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hello,
Hello,
welchen Tag und welchen Monat wir heute gaben, weißt Du ja selber.
Und die vergleichst Du dann mit der Datenbank
http://dev.mysql.com/doc/mysql/en/Date_and_time_functions.htmlselect vorname, nachname, gebdat from personal where day(begdat)='19' and month(gebdat)='11';
Kann sein, dass der Vergleich numerisch sein muss, das habe ich jetzt für mySQL nicht auswendig.
funktioniert in beiden Varianten, allerdings mit der Funktion dayofmonth() statt day(). Die kennt mein MySQL nicht.
Welche Konsequenzen der numerische Vergleich gegenüber dem Stringvergleich hat, vermag ich aber jetzt nicht zu sagen. Das wissen bestimmt ein paar Mitleser hier *hoffentlich*
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
yo,
versuch mal folgende query:
SELECT .... FROM tabelle
WHERE DATE_FORMAT(datum, '%c %e') = DATE_FORMAT(CURDATE(), '%c %e')
Ilja
hallo Ilja
besten dank, deine version klappt super.
viel viel viel dank auch allen anderen.
an das schaltjahr habe ich wirklich nicht gedacht *kopfschüttel*.
hi,
...WHERE DAYOFYEAR(datum) = DAYOFYEAR(now())....
jedoch gibt es mir nicht die richtigen daten aus.
ich habe zb. 2 einträge mit 19.11.xx jedoch wird nur der 2. eintrag angezeigt, dafür noch die 3 nächsten vom 20.11 (wären aber 5 am 20.11.xx)
ich verstehe es nicht. warum ist da so? was mache ich falsch?
kleiner denkfehler - schaltjahre nicht berücksichtigt!
SELECT dayofyear('2004-11-19') ergibt 324
SELECT dayofyear('2003-11-19') jedoch nur 323
und warum? na weil der februar im jahr 2004 einen tag mehr hatte, also verschiebt sich die zählung für alle folgenden tage dieses jahres um eins gegenüber einem "normalen" jahr.
gruß,
wahsaga