Datumsselect rechnet nicht immer richtig

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Datumsselect rechnet nicht immer richtig

    Hallo,

    habe derzeit ein Problem mit einem select.

    zuerst mal was ich vorhabe:
    ich möchte mir auf einer seite anzeigen lassen, wer die nächsten 7 tage alles geb hat und wiealt die person wird. dazu verwende ich einen select, der mir mit dem tagesdatum und dem geb das alter errechnet.

    jener schaut so aus:

    PHP-Code:
    SELECT nachnamevornameDATE_FORMAT(geburtsdatum'%d.%m.%Y'geburtsdatumDATE_FORMAT(FROM_DAYS(TO_DAYS(CURDATE()) - TO_DAYS(geburtsdatum)), '%y')+1 alterm 
    FROM mitarbeiter WHERE CONCAT
    (YEAR(CURDATE()),SUBSTRING(geburtsdatum,5,6)) 
    BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 7 DAYORDER BY 3 ASC 
    das +1 vor alterm brauch ich, weil er mir sonst immer ein jahr zu wenig anzeigt. (also wenn die person heute 21 wird, zeit er 20 an)

    der select funktioniert soweit auch ganz gut.

    nur ab und zu stimmt das alter nicht.
    für heute zeigt er mir an das person X, geb am 02.05.1975, 33 wird was ja nicht stimmt, weil sie heute 32 wird.
    es werden mir noch 5 weitere leute angezeigt, bei denen stimmt das alter...

    nehme ich das +1 weg, stimmt zwar das alter für person X, aber für alle anderen nicht....

    kann mir jmd weiterhelfen wo ich im select anpacken muss, das dass errechnete alter zuverlässig stimmt?

    vielen dank
    Zuletzt geändert von yessirs; 02.05.2007, 12:34.

  • #2
    ja denk mal nach warum das so ist, mit +1 gleichst Du nur aus, wenn jemand nach heute geb hat. ansonsten ist das Jahr korrekt, Du musst also noch eine Prüfung haben ob in diesem jahr der geb schon war oder nicht und abhängig davon das Alter errechnen.
    Beantworte nie Threads mit mehr als 15 followups...
    Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

    Kommentar


    • #3
      ja richtig... hast recht...

      puh, wie bau ich das da noch ein?

      was mich aber dennoch wundert, heute haben zwei leute geb.
      eine person wird 21, da stimmt die zahl und eine person wird 32, da zeigt er aber 33 an....
      Zuletzt geändert von yessirs; 02.05.2007, 12:42.

      Kommentar


      • #4
        schau Dir die Funktion dayofyear an:

        wenn dayofyear(geb) <= dayofyear(NOW()) dann hatte derjenige schon
        geburtstag dieses jahr, dann muss year(NOW()) > als year(geb) sei und
        dann je nachdem addierst Du ein jahr oder nicht
        Beantworte nie Threads mit mehr als 15 followups...
        Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

        Kommentar


        • #5
          Original geschrieben von MelloPie
          wenn dayofyear(geb) <= dayofyear(NOW()) dann hatte derjenige schon
          geburtstag dieses jahr
          geb=2003-03-01, now=2004-02-29

          Ja is' denn heut' scho Weihnachten - äh, dieses Jahr schon Geburtstag gewesen ...?
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            ok, werde es mir zu gemüte führen.

            vielen dank für die flotten antworten

            Kommentar


            • #7
              Original geschrieben von wahsaga
              geb=2003-03-01, now=2004-02-29

              Ja is' denn heut' scho Weihnachten - äh, dieses Jahr schon Geburtstag gewesen ...?
              hehe gute Frage meines wissens hat der gute Mensch der, am 29.02. geb
              hat in Nichtschaltjahren am 01.03. geburtstag

              und umgekehrt is es dann ein problem
              Zuletzt geändert von MelloPie; 02.05.2007, 13:15.
              Beantworte nie Threads mit mehr als 15 followups...
              Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

              Kommentar


              • #8
                wahrscheinlich is dann besser einfach

                sowas
                IF(date_format(NOW(),'%m%d') > date_format(geb,'%m%d'))
                Beantworte nie Threads mit mehr als 15 followups...
                Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                Kommentar


                • #9
                  das mit dem IF is ja ne coole sache,

                  aber ehrlich gesagt hab ich damit noch nix gemacht, wie murks ich das zam das mein select am ende geht?

                  Kommentar

                  Lädt...
                  X