bug beim datum

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

  • #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.
    Zuletzt geändert von Manko10; 19.03.2008, 16:20.

    Kommentar


    • #17

      Kommentar


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

        Kommentar


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

          Kommentar


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

            Kommentar


            • #21


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

              Kommentar


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

                Kommentar


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

                  Kommentar


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

                    Kommentar


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

                      Kommentar


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

                        Kommentar


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

                          Kommentar


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

                            Kommentar


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

                              Kommentar


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

                                jetzt fehlt nur noch die richtige markierung....

                                Kommentar

                                Lädt...
                                X