bug beim datum

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

  • #16
    Jo, richtig.
    Ich denke mal, du verstehst die Funktion DATE_SUB()/SUBDATE() nicht.
    Die ist dazu einen MySQL-Timestamp von einem anderen zu subtrahieren.
    Last edited by Manko10; 19-03-2008, 15:20.

    Comment


    • #17

      Comment


      • #18
        http://dev.mysql.com/doc/refman/4.1/...nction_subdate

        Comment


        • #19
          es werden doch die leute korrekt ausgeworfen ABER der Wert UserGeburtsdatumHeute wird nicht korrekt auf 1 gesetzt!

          Comment


          • #20
            Suche, werden fast alle Datensätze ausgeworfen - ohne erkennbare Auswahl...
            Du musst doch eine Bedingung einfügen, die nicht auf alle Datensätze zutrifft
            PHP Code:
            SELECT 
            FROM TUser
            WHERE DATE_FORMAT
            Geburtsdatum'%e.%m' ) = '26.12' 
            sonst trifft es auf alle Danesätze zu
            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')"

            Habe die Kommas zwischen date und INTERVAL vergessen.
            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)

            Comment


            • #21


              vielleicht hilft das um es zu verdeutlichen. denn ich möchte die leute ja durch die 1 markieren...

              Comment


              • #22
                Original geschrieben von jahlives
                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.
                hups, das gleiche Problem hatte ich wohl auch
                signed oder unsigned... das ist hier die Frage

                Comment


                • #23
                  vielleicht hilft das um es zu verdeutlichen. denn ich möchte die leute ja durch die 1 markieren...
                  Und was hindert dich daran, wenn es mit MySql ned funzt, die Markierung in PHP zu machen?
                  PHP Code:
                  //SQL Query absetzen
                  while($re=mysql_fetch_array($res){
                    if(
                  date('d.m',time()) == date('d.m',strtotime($re['Geburtsdatum']))){
                      
                  //hat heute Geburtstag
                    
                  }else{
                     
                  //hat heute nicht Geburtstag
                    
                  }

                  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)

                  Comment


                  • #24
                    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')"

                    Die Abfrage lieferte ein leeres Resultat zurück ... Es spricht nichts dagegen die Abfrage mit PHP zu machen - dachte aber, dass es eleganter ist, wenn sich die SQL-Abfrage darum kümmert... müsste ja eigentlich gehen.... Ich will ja nur eine 1 setzen, wenn der Kollege heute Geb. hat...

                    Comment


                    • #25
                      Original geschrieben von jahlives
                      Und was hindert dich daran, wenn es mit MySql ned funzt, die Markierung in PHP zu machen?
                      Eigentlich wäre es ja schon besser, die Abfrage zu korrigieren, statt einfach auf PHP auszuweichen.
                      PHP Code:
                      SELECT 
                          name
                      ,
                          
                      vorname,
                          
                      DATE_FORMAT(geburtsdatum,'%e.%m'Geburtstag,
                          IF(
                      DATE_FORMAT(geburtsdatum,'%e.%m') = DATE_FORMAT(CURDATE(),'%e.%m'), 10Flag
                      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')"; 
                      oder gleich den style zurückgeben
                      PHP Code:
                      ...
                          IF(
                      DATE_FORMAT(geburtsdatum,'%e.%m') = DATE_FORMAT(CURDATE(),'%e.%m'), "style='color:red;'"''style
                      ... 
                      und dann bei der Auswertung direkt z.B.
                      PHP Code:
                      echo "<div $obj->style>$obj->Geburtstag</div>"
                      Gruss
                      H2O

                      Comment


                      • #26
                        Leider liefert auch diese Version ein leeres Resultat zurück....


                        wofür steht Geburtstag in dem SQL:
                        PHP Code:
                        DATE_FORMAT(Geburtsdatum,'%e.%m.'Geburtstag

                        Comment


                        • #27
                          Original geschrieben von webdream
                          Leider liefert auch diese Version ein leeres Resultat zurück....
                          Dann gibt es auch keine entsprechenden Daten. Lass halt mal die WHERE-Klausel weg, um das zu prüfen.
                          Original geschrieben von webdream
                          wofür steht Geburtstag in dem SQL:
                          PHP Code:
                          DATE_FORMAT(Geburtsdatum,'%e.%m.'Geburtstag
                          Dann gehe mal zum Stichwortverzeichnis des MySQL-Handbuchs und suche nach Alias
                          Gruss
                          H2O

                          Comment


                          • #28
                            guck dir mal mein bild oben an.... es GIBT daten.

                            Comment


                            • #29
                              Oh, ich habe das Format einfach so unkontrolliert übernommen. In der WHERE-Klausel muss es natürlich einen vernünftig sortierbaren Wert ergeben. Und das ist mit diesem Format natürlich nicht gegeben. Ausserdem würde ich die BETWEEN-Abfrage umkehren, auch wenn ich nicht glaube, dass das eine Rolle spielt. Deshalb
                              PHP Code:
                              ...
                              WHERE 
                                  DATE_FORMAT
                              (geburtsdatum,'%m%d'
                                      
                              BETWEEN DATE_FORMAT(DATE_SUB(CURDATE(),INTERVAL 4 DAY),'%m%d')
                                          AND 
                              DATE_FORMAT(DATE_ADD(CURDATE(),INTERVAL 7 DAY),'%m%d'"; 
                              Gruss
                              H2O

                              Comment


                              • #30
                                wir nähern uns... die ausgabe liefert wie folgt:

                                jetzt fehlt nur noch die richtige markierung....

                                Comment

                                Working...
                                X