Summieren von Time

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

  • Summieren von Time

    Hallo,
    ich habe in einer Tabelle ein Feld "Arbeitszeit", welches den standard 00:00:00 hat. Nun möchte ich die Gesamtzeit aller Tuple herausgekommen.
    Ich hatte eigentlich gehofft, dass es mit sum() geht... dem ist aber nicht so.

  • #2
    Re: Summieren von Time

    Original geschrieben von miguel_rkc
    Ich hatte eigentlich gehofft, dass es mit sum() geht... dem ist aber nicht so.
    natürlich nicht, weil 00:00:00 nun mal keine zahl ist.

    aber du könntest ja zuerst stunden * 3600 + minuten * 60 + sekunden berechnen, und das dann per sum() aufsummieren - dann hättest du schon mal die gesamtdauer in sekunden, und die kannst du ja nachher ggf. wieder umrechnen ...
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      stellt mysql denn keine direkten funktionen dafür zu verfügung?

      Kommentar


      • #4
        speichere in der datenbank die arbeitszeit nicht im format 00:00:00

        speichere lieber einfach nur die sekunden, du tust dich dann um einiges leichter

        00:00:00 ist optische aufbereitung, das hat in der datenbank nix zu suchen, außerdem: was, wenn du mehr als 24 stunden hättest insgesamt?)

        stell dir mal vor, jemand will die daten später in der form 16:30, also ohne sekunden oder 16,5 statt 16:30 haben, dann fährst du mit der speicherung der sekunden deutlich besser

        und die kannst du auch noch mit SUM zusammenzählen
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          soll heissen als ganz normaler integer, oder?

          Kommentar


          • #6
            Original geschrieben von miguel_rkc
            soll heissen als ganz normaler integer, oder?
            nein, du musst noch zweimal LSH (left shift) aufrufen und dann durch 4 teilen, erst dann kannst du das abspeichern



            ja, integer, was denn sonst?
            Ich denke, also bin ich. - Einige sind trotzdem...

            Kommentar


            • #7
              PHP-Code:
              // h:m in s
              $glieder explode(":"$zeit);
              $sekunden $glieder[0]*3600 $glieder[1]*60;

              // s in h:m
              $stunden round($sekunden 3600,0);
              $minuten = ($sekunden 3600) / 60
              ... so klappt es im Grunde genommen, wenn die Zeiteingabe im Format h[h]:m[m] erfolgt

              Kommentar


              • #8
                la Lösung

                select time_format(sum(time_to_sec(FELD)), '%k:%i:%s') from tabelle
                mein Sport: mein Frühstück: meine Arbeit:

                Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

                Kommentar


                • #9
                  kleine grundlagenfrage noch:

                  wie kann ich eine ganzzahlige division erzwingen? wenn ich z.b. 4/5 rechne, dann wandelt er das ergebnis ja automatisch in einen float um

                  Kommentar


                  • #10
                    ein freund von handbüchern bist du nicht oder?

                    http://dev.mysql.com/doc/mysql/en/Ma...functions.html


                    wenn du mysql 4.1 hast hilft dir evtl. auch http://dev.mysql.com/doc/mysql/en/Ar...functions.html
                    Ich denke, also bin ich. - Einige sind trotzdem...

                    Kommentar


                    • #11
                      die frage war auf php bezogen, hätte ich wohl dazu schreiben müssen...

                      Kommentar


                      • #12
                        auch zu php gibt's ein handbuch

                        http://www.php.net/manual/de

                        http://www.php.net/manual/en

                        und noch viele mehr, such dir deine lieblingssprache aus
                        Ich denke, also bin ich. - Einige sind trotzdem...

                        Kommentar


                        • #13
                          echt? das manual hatte ich bereits konsultiert, jedoch stieß ich auf folg. aussage:" Der Divisions-Operator ("/") gibt immer eine Fließkommazahl zurück, sogar wenn die zwei Operanden Ganzzahlen sind (oder Zeichenketten, die nach Ganzzahlen umgewandelt wurden)."

                          demnach grundete meine frage weniger auf absoluter unwissenheit, sondern sollte viel mehr ein ansporn zur ideengebung darstellen.

                          Kommentar


                          • #14
                            der ist ja auch nicht für ganzzahlige Operation ausgelegt. Etwas tricksen mußt du schon.

                            floor(4/5) => 0
                            floor(5/2) => 2

                            in MySQL gibts div-Operator dafür

                            Kommentar


                            • #15
                              Original geschrieben von miguel_rkc
                              echt? das manual hatte ich bereits konsultiert, jedoch stieß ich auf folg. aussage:" Der Divisions-Operator ("/") gibt immer eine Fließkommazahl zurück, sogar wenn die zwei Operanden Ganzzahlen sind (oder Zeichenketten, die nach Ganzzahlen umgewandelt wurden)."

                              demnach grundete meine frage weniger auf absoluter unwissenheit, sondern sollte viel mehr ein ansporn zur ideengebung darstellen.
                              naja, ein paar zeilen tiefer steh
                              Siehe auch im Handbuch das Kapitel über Mathematische Funktionen.
                              da hast du dann mit sicherheit nicht nachgelesen oder?
                              Ich denke, also bin ich. - Einige sind trotzdem...

                              Kommentar

                              Lädt...
                              X