Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Frage zur Addition von Zeiten

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von Buzz Lightzyear, 3 September 2014.

  1. Buzz Lightzyear

    Buzz Lightzyear Benutzer

    Hi!

    Erstmal ein großes Hallo! Ich bin neu hier im Forum :)

    Dann gleich mal zu meiner Frage: Und zwar habe ich eine Tabelle(UptimeData), in der das Datum und eine Zeitspanne gegeben sind:

    Date Time
    '2014-08-31', '00:06:00'
    '2014-08-31', '00:31:00'
    '2014-08-31', '05:28:00'
    '2014-09-01', '06:50:00'
    '2014-09-01', '02:01:00'
    '2014-09-02', '02:24:00'
    '2014-09-02', '02:41:00'
    '2014-09-02', '01:24:00'
    '2014-09-02', '03:30:00'
    '2014-09-03', '03:53:00'

    Nun will ich diese Zeiten addieren, was ich mit dem Kommando

    select sec_to_time(time_to_sec(SUM(Time))) as TimeTotal from UptimeData;

    mache.

    Das funktioniert meistens auch, allerdings nicht immer. Manchmal bekomme ich die gesamte Zeit zurück und manchmal NULL.

    Kann mir jemand sagen was da falsch läuft?

    Danke & Lg
     
  2. akretschmer

    akretschmer Datenbank-Guru


    Korrekte Datentypen?

    Ich kann es nicht nachvollziehen:

    Code:
    test=# create table zeiten as select '00:00:00'::interval + random() * 50000 * '1second'::interval as zeit from generate_series(1,10) s;
    SELECT 10
    test=*# select * from zeiten ;
      zeit
    -----------------
     05:21:38.91766
     10:35:42.904267
     03:15:55.221081
     09:04:01.765289
     02:58:01.843874
     04:41:29.427369
     06:02:04.95164
     02:17:27.485943
     10:53:58.386089
     06:57:01.189568
    (10 rows)
    
    test=*# select sum(zeit) from zeiten;
      sum
    ----------------
     62:07:22.09278
    (1 row)
    

    Sieht für mich okay aus. Ist aber kein MySQL jetzt. Vielleicht kann MySQL keine Zeiten über ein Tag somit berechnen. Würde mich bei all den komischen Bugs ned wundern...
     
  3. Buzz Lightzyear

    Buzz Lightzyear Benutzer

    Hi,

    für mich auch nicht. Was ich beobachtet habe war:

    Bei
    -- 7 einträgen -> Null
    -- 8 einträgen -> not Null
    -- 9 einträgen -> not Null
    -- 10 einträgen -> null

    Hilft wahrscheinlich auch nicht weiter... echt komisch...

    lg
     
  4. akretschmer

    akretschmer Datenbank-Guru

    Meine Frage beantwortet das aber nicht.
     
  5. Walter

    Walter Administrator Mitarbeiter

    Enthält die DateTime Spalte vielleicht manchmal NULL?
     
  6. akretschmer

    akretschmer Datenbank-Guru

    Dachte ich auch schon, sollte aber kein Problem sein, bei sum() wird NULL ignoriert.
     
  7. ukulele

    ukulele Datenbank-Guru

    Eigentlich ist nur das Format der Spalte "Time" interessant und was die Funktion daraus macht.
     
  8. Buzz Lightzyear

    Buzz Lightzyear Benutzer

    Hallo,

    also die Date Spalte hat den Datentyp DATE und die Time Spalte TIME. Nein, NULL steht sonst nirgends drin. Grundlage ist ein kleines Java-Programm, welches beim Herunterfahren von Ubuntu aufgerufen wird. Dann wird die Uptime ausgelesen und in die SQL Datenbank geschrieben.

    Lg
    buzz
     
  9. ukulele

    ukulele Datenbank-Guru

    Dann stellt sich noch die Frage warum du sec_to_time(time_to_sec(sum(spalte))) verwendest. In diesem Fall sollte auch sum(time) das gleiche ergeben. Wenn sich TIME Typen nicht per sum() richtig addieren lassen solltest du zumindest sec_to_time(sum(time_to_sec(spalte))) testen, anders macht es keinen Sinn.
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden