2017-02-01 6 views
2

Ich identifiziere den Unterschied zwischen zwei Timestamp-Felder in Oracle.Unterschied zwischen Zeitstempeln in Oracle

(TIMESTAMPa-TIMESTAMPb)

Ergebnis: +09 19: 16: 04,747000

ich zu anmerken bin versucht, ob der resultierende Wert positiv oder negativ ist.

Meine derzeitige Lösung funktioniert, aber ich denke, es muss einen besseren Weg geben.

Lösung:

CASE 
WHEN SUBSTR((TIMESTAMPa-TIMESTAMPb),1,1)='+' 
THEN 'AFTER' 
ELSE 'BEFORE' 
END AS DIFF 
+1

Sie benötigen die tatsächliche Differenz (als Intervall) oder * nur * die später ist? Was, wenn die Zeitstempel gleich sind, behandeln Sie ein Nullintervall als positiv oder negativ? (Es würde als '+0 00 berichtet: ...' aber ist das, was Sie wollen?) –

+0

Ich bin nur mit dem +/- Wert betroffen. in diesem Fall wäre es nicht möglich, einen Nullwert zu haben – hadoo

Antwort

3

interval '0' day kann von jedem anderen '0' Intervall

select case 
      when (timestamp '2017-02-01 20:07:09' - timestamp '2017-02-01 21:35:02') > interval '0' day 
      then 'AFTER' 
      else 'BEFORE' 
     end 

from dual 

VOR

... ersetzt werden, aber warum nicht direkt verwenden vergleichen ?

select case 
      when timestamp '2017-02-01 20:07:09' > timestamp '2017-02-01 21:35:02' 
      then 'AFTER' 
      else 'BEFORE' 
     end 

from dual 

VOR

+0

beide arbeiten und der zweite ist, wie Sie es einfach gesagt, es ist mir nicht einmal in den Sinn gekommen. Danke! – hadoo

Verwandte Themen