Datumsselect rechnet nicht immer richtig

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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
    Last edited by 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

    Comment


    • #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....
      Last edited by yessirs; 02-05-2007, 12:42.

      Comment


      • #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

        Comment


        • #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.

          Comment


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

            vielen dank für die flotten antworten

            Comment


            • #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
              Last edited by 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

              Comment


              • #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

                Comment


                • #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?

                  Comment

                  Working...
                  X