Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Mysqli / Werte zwischen 2 Timestamps ermitteln

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Mysqli / Werte zwischen 2 Timestamps ermitteln

    Hallo,

    ich hab folgenden Query geschrieben, dieser funktioniert auch ohne Probleme.,.

    PHP-Code:

        $Werte_Speichern 
    = array();
        
        
    $sql 'SELECT
                    Tab1.ID
                FROM
                    Tab1   
                WHERE
                   Tab1.Zeit < ? AND Tab1.Zeit > ?
               '
    ;
        
    $stmt $db->prepare($sql);
        
    $stmt->bind_param('ss'date('Y-m-d H:i:s'ceil(strtotime('now')/60)*60), date('Y-m-d H:i:s'floor(strtotime('now')/60)*60));
        
    $stmt->execute();
        
    $stmt->bind_result($Cssg);
        while(
    $stmt->fetch()) {
            
    $Werte_Speichern[] = array('Ids' => $Cssg
                                  
    );
        }        
        
    $stmt->close();

        if(
    $Werte_Speichern != array()) {
            .... } 
    Ich würde die Zeitangaben gerne direkt im Query abfragen und nicht via php ermitteln und da wird der Zeitstempel wenn ich das via CEIL((NOW()/60)*60) bzw. CEIL((NOW()/60)*60) ausführe, fehlerhaft berechnet!

    Mir fehlt die Idee, wie ich im Mysql auf ganze Minuten auf, bzw. abrunden kann.,.

    Mfg

    Edit: Die auführlichere Beschreibung ist hier und hier noch was dazu zu finden. Da ich ja nicht alles doppelt schreiben brauch Ist der gleiche Threat, nur weiter unten.
    Github_Cyrix, Laravelgemeinschaft bei php.de,Laravel Chat


  • #2
    Zitat von _cyrix_ Beitrag anzeigen
    ich hab folgenden Query geschrieben, dieser funktioniert auch ohne Probleme.,.
    Schön - und welches Problem hast du jetzt eigentlich ...?

    Kommentar


    • #3
      Zitat von _cyrix_ Beitrag anzeigen
      Ich würde die Zeitangaben gerne direkt im Query abfragen und nicht via php ermitteln und dass funktioniert leider nicht.
      Letzte Chance für dich, jetzt mal eine vernünftige Problembeschreibung zu liefern!

      Darin sollte kein „funzt nich“ vorkommen, dafür sollte sie erst mal eine nachvollziehbare(!) Beschreibung enthalten, was du erreichen willst.

      Wenn das jetzt im dritten Anlauf immer noch nicht klappt, fliegt der Thread auf den Müll.

      Kommentar


      • #4
        Zitat von ChrisB Beitrag anzeigen
        Letzte Chance für dich, jetzt mal eine vernünftige Problembeschreibung zu liefern!

        Darin sollte kein „funzt nich“ vorkommen, dafür sollte sie erst mal eine nachvollziehbare(!) Beschreibung enthalten, was du erreichen willst.

        Wenn das jetzt im dritten Anlauf immer noch nicht klappt, fliegt der Thread auf den Müll.
        Ich mag es nicht, wenn man mir droht.,. Egal auf was für einer Art und Weise. Es macht immer der Ton die Musik und ein etwas höflichere Umgangsweise kann man schon in einem so großen Forum erwarten.

        Desweiteren, habe ich erst reingeschrieben, was nicht funktionert und dann im weiteren Abschnitt, was mein Problem ist.

        Mir fehlt die Idee, wie ich im Mysql auf ganze Minuten auf, bzw. abrunden kann.,.
        Die Funktionen im Mysql mit CEIL und FLOOR brachten leider nicht erhofften Erfolg.
        Dass ist eigentlich die ganze Frage und der Query, dient nur zur Veranschaulichung.,.

        Ehrlich gesagt, verstehe ich nicht mal Ansatzweise dein Problem. Nen einfacher 1 - 2 Zeiler mit nen kleinen Lösungsansatz ( Denkanstoss zu meinem Problem mit dem Query ) hätte schon gereicht, statt einem Fehler hinterzulaufen, wo keiner ist.

        Mach mit dem Threat was du möchtest. Ich fand diese Art und Weise der Kommunikation mehr als Unangebracht von einem Moderator.
        Github_Cyrix, Laravelgemeinschaft bei php.de,Laravel Chat

        Kommentar


        • #5
          Zitat von _cyrix_ Beitrag anzeigen
          Ich mag es nicht, wenn man mir droht.,. Egal auf was für einer Art und Weise. Es macht immer der Ton die Musik und ein etwas höflichere Umgangsweise kann man schon in einem so großen Forum erwarten.
          Das war keine Drohung, nur ein Hinweis.

          Und wir erwarten von den Nutzern hier auch so viel Höflichkeit, dass sie sich die Mühe machen, eine verständliche und nachvollziehbare Problembeschreibung zu verfassen.

          Ehrlich gesagt, verstehe ich nicht mal Ansatzweise dein Problem.
          Ich deins auch nicht -
          Nen einfacher 1 - 2 Zeiler mit nen kleinen Lösungsansatz ( Denkanstoss zu meinem Problem mit dem Query ) hätte schon gereicht
          - und deshalb kann ich dir auch keinen wievielauchimmer-Zeiler liefern, wenn du nicht verständlich beschreiben kannst, welches Problem du eigentlich zu lösen versuchst.

          Kommentar


          • #6
            Zitat von ChrisB Beitrag anzeigen
            Das war keine Drohung, nur ein Hinweis.

            Und wir erwarten von den Nutzern hier auch so viel Höflichkeit, dass sie sich die Mühe machen, eine verständliche und nachvollziehbare Problembeschreibung zu verfassen.


            Ich deins auch nicht -

            - und deshalb kann ich dir auch keinen wievielauchimmer-Zeiler liefern, wenn du nicht verständlich beschreiben kannst, welches Problem du eigentlich zu lösen versuchst.
            In meinen Augen war sie verständlich, da ich das eigentliche Problem ja darin geschildert habe, aber nun gut. Hab sie jetzt noch mal geändert, mit verzicht auf die beiden Worte und das Problem noch etwas mehr umschrieben. Ich habe wirklich keine Ahnung, was ich noch dazu schreiben soll.
            Github_Cyrix, Laravelgemeinschaft bei php.de,Laravel Chat

            Kommentar


            • #7
              Zitat von _cyrix_ Beitrag anzeigen
              Ich habe wirklich keine Ahnung, was ich noch dazu schreiben soll.
              Was ist denn daran
              eine nachvollziehbare(!) Beschreibung [...], was du erreichen willst.
              so schwer zu verstehen?

              Mit „runden“ bist du auf dem Holzweg. Ein Datum ist keine Zahl, die man runden könnte.

              Also, beschreibe jetzt bitte endlich mal verbal, was du erreichen möchtest!

              Jetzt aber wirklich letzte Chance, danach reicht's.

              Kommentar


              • #8
                Ich möchte den oben genannten Query mit MYSQL Funktionen nutzen, damit ich auf die Php - Parameter verzichten kann. Da eine reine Mysql Anwendung ohne den Zusatz von Php einen Performancegewinn bringen sollte. Zumindestens Hoffe ich das.,. Weil ich der Meinung bin, jede unnütze Funktion muss verarbeitet werden und je weniger ich davon habe, desto schneller läuft das Script.

                Ich kann ein Datum nicht Runden ? In Php habe ich das doch auch auf folgender Art und Weise gelöst bekommen.

                PHP-Code:
                date('Y-m-d H:i:s'ceil(strtotime('now')/60)*60
                Warum solle dieses direkt in Mysql nicht möglich sein ? Okay, wenn man es genau betrachtet und dass ist ja anscheinend, was du möchtest. Ist ein Timestamp und kein Datum, den ich mit Hilfe der Date-Funktion umgewandelt habe. Nur in Mysql macht er das doch sonst automatisch. Wenn ich dort NOW() eintrage, habe ich ja auch das aktuelle Datum in entsprechendem Feld der Tabelle stehen.

                Wie gesagt. Ich möchte den Query oben, von unnötiges php Befreien. Als ich die entsprechenden Querys mit CEIL() und FLOOR() direkt in Mysql abgefragt hatte, gab es Unterschiede von ca. 3h.

                Er sollte zwischen 22:12:00 und 22:13:00ausgeben und hat aber 07:00:00 07:01:00 ausgegeben. Die nächste Frage ist also, warum ? Bzw. wo dort der Fehler lag.

                Ich hatte dafür in meinem Query, die Platzhalteparameter durch die CEIL und FLOOR Funktionen ersetzt und die bind_param entfernt.

                Nach diesem Script würden, noch einige mehr Abfragen folgen, die auf dieses Script aufbauen, daher würde ich hier gerne einen Denkanstoss zu meinem Querypost erhalten.
                Github_Cyrix, Laravelgemeinschaft bei php.de,Laravel Chat

                Kommentar


                • #9
                  Du hast es immer noch nicht verstanden ...

                  Ich möchte eine einfache, verbale Beschreibung von dir lesen - „ich möchte Daten nach folgendem Muster selektieren: ...“

                  Ich möchte den oben genannten Query mit MYSQL Funktionen nutzen, damit ich auf die Php - Parameter verzichten kann.
                  Warum rundest du, was bezweckst du damit?

                  Das mal zu beschreiben, kann doch wohl verflixt noch mal nicht so schwer sein ...?

                  Kommentar


                  • #10
                    Zitat von ChrisB Beitrag anzeigen
                    Du hast es immer noch nicht verstanden ...

                    Ich möchte eine einfache, verbale Beschreibung von dir lesen - „ich möchte Daten nach folgendem Muster selektieren: ...“


                    Warum rundest du, was bezweckst du damit?

                    Das mal zu beschreiben, kann doch wohl verflixt noch mal nicht so schwer sein ...?
                    Ich möchte eine Spanne von einer Minute haben, die sich auf die aktuelle Uhrzeit bezieht, damit ich alle Werte die innerhalb dieser Minute auftreten in einem Array speichern und weiter verarbeiten kann.

                    Die Spanne sollte als Beispiel so ausehen. Uhrzeit = 2010-09-09 14:13:25
                    Spanne: von 2010-09-09 14:13:00 bis 2010-09-09 14:14:00
                    Ermittel alle Id's die innerhalb dieser Spanne liegen und speich sie in einem Array.,. Das Datum ist hier natürlich wichtig, dass es keine Komplikationen bei einem Wechsel zwischen den Tagen kommt.

                    Die nachfolgenden Querys spielen ja hier auch keine Rolle, mir gehts ja nur um diesen.
                    Github_Cyrix, Laravelgemeinschaft bei php.de,Laravel Chat

                    Kommentar


                    • #11
                      Na also - was das jetzt so schwer ...?


                      Das kannst du bspw. machen, im dem du NOW() als Argument für DATE_FORMAT verwendest - und es einmal als Untergrenze mit Sekunden fest auf '00' und als Obergrenze auf '59' gesetzt formatierst.

                      Kommentar


                      • #12
                        Lösung

                        PHP-Code:
                            $Werte_Speichern = array();
                            
                            
                        $sql "SELECT
                                        Tab1.ID
                                    FROM
                                        Tab1    
                                    WHERE
                                        Tab1.Zeit < DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:59') AND Tab1.Zeit > DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:00')
                                   "
                        ;
                            
                        $stmt $db->prepare($sql);
                            
                        $stmt->execute();
                            
                        $stmt->bind_result($Cssg);
                            while(
                        $stmt->fetch()) {
                                
                        $Werte_Speichern[] = array('Ids' => $Cssg
                                                      
                        );
                            }        
                            
                        $stmt->close(); 
                        Auch wenn ich "vielleicht nen klein bisschen schwierig" war.,. sag ich trotzdem Danke, hat natürlich geklappt.,.

                        PS: Ich drück es meistens komplizierter aus, als es eigentlich ist.,. werde ich mal für die Zukunft versuchen abzustellen.,.
                        Github_Cyrix, Laravelgemeinschaft bei php.de,Laravel Chat

                        Kommentar


                        • #13
                          Code:
                                      WHERE
                                          Tab1.Zeit < DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:59') AND Tab1.Zeit > DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:00')
                          Wenn du wirklich alle Datensätze haben willst, die innerhalb der Minute liegen, solltest du aber >= und <= verwenden.

                          Kommentar


                          • #14
                            Zitat von ChrisB Beitrag anzeigen
                            Code:
                                        WHERE
                                            Tab1.Zeit < DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:59') AND Tab1.Zeit > DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:00')
                            Wenn du wirklich alle Datensätze haben willst, die innerhalb der Minute liegen, solltest du aber >= und <= verwenden.
                            Du hast natürlich Recht., Korrigiert.,. Danke !
                            Github_Cyrix, Laravelgemeinschaft bei php.de,Laravel Chat

                            Kommentar

                            Lädt...
                            X