的Oracle SQL得到两个时间戳

问题描述:

event   start        end 
event147   22-JUL-18 11.55.02.000000000 23-JUL-18 12.45.12.000000000 
event148   24-JUL-18 13.12.45.000000000 25-JUL-18 18.33.05.000000000 

以上是md_events表之间的日差,我需要事件147的结束和事件148的开始之间获得日差(没有时间部分),两者都是时间戳。的Oracle SQL得到两个时间戳

我都试过了,但得到的错误(同样与numtodsinterval)

select dsintervaltonum(me2.start- me1.end, 'day') as days 
    from md_events me1, md_events me2 
where me1.event = 'event147' 
    and me2.event = 'event148' 

此查询返回时间部分以及

select to_char(me2.start- me1.end, 'DDD') as days 
     from md_events me1, md_events me2 
    where me1.event = 'event147' 
     and me2.event = 'event148' 

投两个时间戳的日期,然后直接把他们的区别:

select 
    cast(me2.start as date) - cast(me1.end as date) 
from md_events me1, md_events me2 
where 
    me1.event = 'event147' and 
    me2.event = 'event148' 
+0

谢谢,它的工作。 –

我的系统中没有Oracle。所以我要给出一种方法/逻辑来使用SQLITE来查找您的解决方案。用这种逻辑改变ORACLE语法的SQLITE语法!!

SELECT y.start,x.endd, y.start-x.endd as diff FROM (SELECT a.* FROM NAMES AS a WHERE a.event='event147') AS x, (SELECT b.* FROM NAMES AS b WHERE b.event='event148') AS y; 

您也可以使用这一个:

SELECT EXTRACT(DAY FROM (me2.start- me1.end)) 
FROM md_events me1 
    CROSS JOIN md_events me2 
where 
    me1.event = 'event147' and 
    me2.event = 'event148'