TimeDiff und Übergang zum nächsten Tag

moppi83

Neuer Benutzer
Beiträge
4
Hallo,

ich habe eine DB mit folgender Struktur
Job; StartTime; EndTime;

Nun werden täglich logfiles erzeugt, welche die Zeitdauer TimeDiff (EndTime - StartTime) ins Log schreiben.

Im Falle, dass die EndTime am Tag x+1 ist und StartTime am Tage x liegt, wird als Duration auch die Zeit am Vortag mitberechnet. Ich brauche aber in diesem Fall nur die Zeitdauer des Tages x+1.

Die Abfrage (TimeDiff (EndTime - StartTime)) befindet sich im Select-Teil der DB-Abfrage.
Ich kann also hier nicht if then else verwenden... .

Gibt es eine einfache Möglichkeit zur Realisierung?

Viele Grüße

Moppi
 
Zuletzt bearbeitet:
Werbung:
So?

Code:
test=# create table moppi83 (job int generated always as identity primary key, starttime timestamp, endtime timestamp);
CREATE TABLE
test=*# commit;
COMMIT
test=*# insert into moppi83 (starttime , endtime) values (now() - '20 hours'::interval, now());
INSERT 0 1
test=*# commit;
COMMIT
test=# insert into moppi83 (starttime , endtime) values (now() - '2 hours'::interval, now());
INSERT 0 1
test=*# commit;
COMMIT
test=# select *, case when starttime::date != endtime::date then endtime - (endtime::date::timestamp) else endtime-starttime end as duration from moppi83;
 job |         starttime          |          endtime           |    duration     
-----+----------------------------+----------------------------+-----------------
   1 | 2021-04-11 16:52:28.962607 | 2021-04-12 12:52:28.962607 | 12:52:28.962607
   2 | 2021-04-12 10:53:03.194247 | 2021-04-12 12:53:03.194247 | 02:00:00
(2 rows)

test=*#
 
Werbung:
Zurück
Oben