x-plosiv: Heutige Geburtstage auslesen

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.

  1. 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

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    1. 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.html

      select 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

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau
  2. yo,

    versuch mal folgende query:

    SELECT .... FROM tabelle
    WHERE DATE_FORMAT(datum, '%c %e') = DATE_FORMAT(CURDATE(), '%c %e')

    Ilja

    1. 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*.

  3. 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

    --
    "Look, that's why there's rules, understand? So that you _think_ before you break 'em."