Oracle中

时间:2017-02-01 17:59:42

标签: sql oracle11g

我正在确定Oracle中两个时间戳字段之间的区别。

(TIMESTAMPa-TIMESTAMPb)

结果:+09 19:16:04.747000

我试图注意结果值是正还是负。

我目前的解决方案有效,但我认为必须有更好的方法。

解决方案:

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

1 个答案:

答案 0 :(得分:3)

interval '0' day可以替换为任何其他' 0'间隔

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
  

...但为什么不直接比较?

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

from    dual