Frage zur Addition von Zeiten

Buzz Lightzyear

Benutzer
Beiträge
17
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
 
Werbung:
Hi!

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


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


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...
 
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
 
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
 
Werbung:
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.
 
Zurück
Oben