Timestamp-Diff, Minuten extrahieren

Hey. Und zwar hab ich mal eine etwas speziellere Frage bezüglich Timestamp. Aus einer Select anfrage erhalte ich eine Zeit-Differenz.

Select SUM(session_end-session_start) as sum_diff …

Ergebnis wäre dann zb.

86:45:59.796

Wir schaffe ich daraus die komplette anzahl der Minuten zu extrahieren. Sowas wie:

EXTRACT HOURS FROM SUM(session_end-session_start) … funktioniert erstens nicht (??) und zweitens würde das lediglich die 45 Minuten auslesen. Jemand ne idee, wie ich das bewerkstelligen könnte?

Du kannst die einzelnen Teile jeweils mit dem passenden Faktor multiplizieren. Also den Stundenwert mit 60, den Minutenwert mit 1 (oder so lassen :wink: ), dann hast du die Anzahl Minuten.

Okay. Nur… wenn ich sage.

SELECT EXTRACT(HOUR FROM TIME ‘86:38’);

kommt sowat wie.

ERROR: date/time field value out of range: “86:38”

********** Fehler **********

Du hast dort einen Interval als Ergebnis, keinen Timestamp.

Du könntest mittels Stringfunktionen das ganze zerlegen.

Jup hab ich gemacht. thx.

Wie kommst Du darauf, daß das NICHT funktioniert? Wenn Du die Minuten daraus extrahierst, bekommst Du das korrekte Ergebniss: 45. Das mag nun allerdings für Dich nicht korrekt sein, aber hier ist PEBKAC im Spiel:

test=*# select extract(hour from '86:45:59.796'::interval)*60 + extract (minutes from '86:45:59.796'::interval);
 ?column?
----------
     5205
(1 Zeile)

Zeit: 0,267 ms
test=*#

Andreas