2016-04-17 11 views
0

Ich versuche, eine Spalte zu projizieren, die die Startzeit eines Mitarbeiters von der Endzeit subtrahiert, um die geleisteten Arbeitsstunden zu erhalten.Oracle SQL SELECT Anweisung Berechnungen

Hier ist, was ich habe:

select task_name "NAME", to_char(ses_start, 'DD-MON-RR') "DATE", to_char(ses_start,'HH:MI PM') "START", to_char(ses_end, 'HH:MI PM') "END",to_number(to_char(ses_end,'HH24:MI')) - to_number(to_char(ses_start,'HH24:MI')) "TOTAL" 

Die TOTAL-Säule nicht funktioniert - ist es sogar möglich, so etwas zu tun? Es funktionierte, bis ich diese Spalte hinzugefügt, mit Ausgabe ähnlich:

TASK_NAME   DATE  START  END 
----------------- ------------ ---------- ----------- 
create flyers  26-MAR-16 02:00 PM 04:30 PM 
update website 28-MAR-16 11:00 AM 01:00 PM 

So jetzt habe ich eine letzte Spalte soll (vorzugsweise in Stunden):

TOTAL 
----- 
2.5 
2 

oder zumindest in Stunden & Minuten (das ist, was ich versuchte zu tun) ...

TOTAL 
------- 
02:30 
02:00 

Irgendwelche Vorschläge?

Antwort

2

können Sie Datumsformate im Orakel subtrahieren, es gibt Ihnen eine Dezimalzahl, die die Dauer

in Tagen ist
select 
    task_name, 
    to_char(ses_start, 'DD-MON-RR') DATE, 
    to_char(ses_start,'HH:MI PM') START, 
    to_char(ses_end, 'HH:MI PM') END, 
    round((ses_end - ses_start) * 24, 2) DURATION_IN_HOUR 
... 
+0

Das wunderbar funktioniert - vielen Dank! – mtfalcon31