bug beim datum

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

  • bug beim datum

    Hallo!
    Ich habe die folgende Abfrage um mir die HEUTIGEN Geburtstage anzeigen zu lassen.
    Es wird aber nur EINER von DREI Mitgliedern mit einer 1 gekennzeichnet. Wie kann das kommen????
    Hat jemand eine Idee??

    PHP-Code:
    SELECT IF( DAYOFYEARGeburtsdatum ) = DAYOFYEARCURDATE( ) ) , 1)
    UserGeburtsdatumHeuteIDNameVornameEmailGeburtsdatumAktiv
    FROM 
    `TUser
    WHERE DAYOFYEARcurdate( ) ) -<= dayofyear( `Geburtsdatum` ) 
    AND 
    DAYOFYEARcurdate( ) ) +>= dayofyear( `Geburtsdatum` ) 
    AND 
    GeburtsdatumAnzeigen =1
    AND Aktiv =1
    ORDER BY dayofyear
    ( `Geburtsdatum` ) 
    LIMIT 0 30 
    Vielen Dank!

  • #2
    Hm ... ganz sicher dass die Flags auch 1 besitzen? Hast du sie auch mal zur Kontrolle ausgegeben?

    Kommentar


    • #3
      der witz ist, das es mal klappt und mal nicht... gestern wurde mehrere angezeigt, heute nur einer.... heute hat nur einer von dreien eine 1

      Kommentar


      • #4
        Also im Schaltjahr koennte der Vergleich dayofyear sowieso hinken...
        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
          Also im Schaltjahr koennte der Vergleich dayofyear sowieso hinken...
          2008 ist doch ein schaltjahr, oder?! was kann ich da ändern?

          Kommentar


          • #6
            Wenn das Geburtsdatum ein DATE im Format YYYY-MM-DD ist, so kannst du es doch einfach so mit CURDATE() vergleichen....
            signed oder unsigned... das ist hier die Frage

            Kommentar


            • #7
              Original geschrieben von case
              Wenn das Geburtsdatum ein DATE im Format YYYY-MM-DD ist, so kannst du es doch einfach so mit CURDATE() vergleichen....
              tu ich doch, oder versteh ich dich falsch?!

              Kommentar


              • #8
                Ich habe die folgende Abfrage um mir die HEUTIGEN Geburtstage anzeigen zu lassen.
                Wenn du nur die heutigen Geburtstage willst, dann verstehe ich nicht ganz was gegen
                PHP-Code:
                $sql ="SELECT UserGeburtsdatumHeute, ID, Name, Vorname, Email,Geburtsdatum, Aktiv FROM `TUser` 
                WHERE Geburtsdatum = CURDATE() 
                AND GeburtsdatumAnzeigen =1
                AND Aktiv =1
                LIMIT 0 , 30"

                sprechen würde? ORDER BY kannst du vergessen, weil wohl alle Geburtsdaten von heute denselben Tag des Jahres haben
                Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                Kommentar


                • #9
                  wie du siehst, hole ich mir auch noch die geb.tage der letzten 4 bzw. die nächsten 7 tage aus der db.
                  das datum speicher ich so ab YYYY-MM-DD

                  der wert UserGeburtsdatumHeute kriegt aus der sql-abfrage je nachdem den wert 1 oder 0. 1=heute geb.tag.

                  wenn ich deine abfrage nehme
                  PHP-Code:
                  SELECT FROM `TUser
                  WHERE Geburtsdatum CURDATE() 
                  wird kein datensatz ausgegeben...

                  markiert wird der datensatz des heutigen geb. durch die 1 und später so ausgegeben
                  PHP-Code:
                  if($UserGeburtsdatumHeute == "1")
                  {
                  $UserGeburtsdatum="<b><font 
                  color=Red>
                  $UserGeburtsdatum</font></b>";

                  Kommentar


                  • #10
                    wird kein datensatz ausgegeben...
                    Dann stimmt etwas mit dem Datum in der Spalte nicht. Ist denn die Spalte Geburtsdatum definitiv in dieser YYYY-MM-DD Form?
                    Und die Daten 4 Tage zuvor und 7 Tage danach würde ich so rauskriegen versuchen
                    PHP-Code:
                    $sql "SELECT * FROM tabelle 
                    WHERE Geburtsdatum BETWEEN 
                    DATE_ADD(Geburtsdatum INTERVAL 7 DAY) AND 
                    DATE_SUB(Geburtsdatum INTERVAL 4 DAY) ORDER BY Geburtsdatum DESC"

                    Zuletzt geändert von jahlives; 19.03.2008, 14:41.
                    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                    Kommentar


                    • #11
                      das feld Geburtsdatum ist vom Typ date mit dem Standard 0000-00-00, also YYYY-MM-DD

                      Wie gesagt, es lief problemlos. Heute fiel uns der Fehler auf...

                      Kommentar


                      • #12
                        Mal alle Geburtstagsdaten rausgezogen und angeschaut? Mach mal ein SELECT Geburtsdatum FROM tabelle und poste das Ergebnis hier...
                        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                        Kommentar


                        • #13
                          ein paar bsp.:
                          1953-08-20
                          0000-00-00
                          1937-12-26
                          0000-00-00
                          1968-07-05
                          1939-10-25
                          1971-11-07
                          1969-07-06
                          usw.

                          Kommentar


                          • #14
                            Sorry ich bin da wohl etwas auf dem Schlauch gestanden, habe irgendwie vergessen, dass zum Datum auch das Jahr gehört und dieses sicherlich nicht mit dem Jahr von CURDATE() übereinstimmen wird.
                            Ob der BETWEEN allerding korrekt funzt ohne Jahresangabe weiss ich ned. Probier mal das Folgende
                            PHP-Code:
                            $sql "SELECT * FROM tabelle WHERE DATE_FORMAT(Geburtsdatum,'%e.%m') 
                            BETWEEN DATE_FORMAT(DATE_ADD(CURDATE() INTERVAL 7 DAY),'%e.%m') 
                            AND DATE_FORMAT(DATE_SUB(CURDATE() INTERVAL 4 DAY),'%e.%m')"

                            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                            Kommentar


                            • #15
                              PHP-Code:
                              MySQL meldet:  
                              #1064 - You have an error in your SQL syntax; 
                              check the manual that corresponds to your MySQL 
                              server version 
                              for the right syntax to use near 'INTERVAL 7 DAY),'%e.%m') 

                              AND DATE_FORMAT(DATE_SUB(CURDATE() INTERVAL 4 DAY),'
                              %e' at line 1 
                              Leider versteh ich Deine Abfrage nicht wirklich....
                              Wenn ich nur nach
                              PHP-Code:
                              SELECT 
                              FROM TUser
                              WHERE DATE_FORMAT
                              Geburtsdatum'%e.%m' 
                              Suche, werden fast alle Datensätze ausgeworfen - ohne erkennbare Auswahl...

                              Kommentar

                              Lädt...
                              X