我正在尝试计算Oracle中两个日期之间的差异,并将结果作为TimeStamp获取。这是SQL Server中最容易做到的事情,但似乎Oracle没有一种简单的方法来解决这个问题。我拒绝相信我必须编写那么多代码才能得到我需要的东西。有人可以告诉我是否有更简单的方法来获得这种差异?:
SELECT TO_CHAR(EXTRACT(HOUR FROM NUMTODSINTERVAL(enddate-startdate, 'DAY')), 'FM00')
|| ':' ||
TO_CHAR(EXTRACT(MINUTE FROM NUMTODSINTERVAL(enddate-startdate, 'DAY')), 'FM00')
|| ':' ||
TO_CHAR(EXTRACT(SECOND FROM NUMTODSINTERVAL(enddate-startdate, 'DAY')), 'FM00')
我需要的结果如下:
enddate = '2017-03-01 17:30:00'
startdate = '2017-03-01 10:00:00'
difference: 07:30:00
答案 0 :(得分:1)
提取两个日期。将结果添加到当前日期(没有任何时间组件,trunc(sysdate))并仅显示时间。
select to_char(trunc(sysdate) + (to_date('2017-03-01 17:30:00', 'YYYY-MM-DD HH24:MI:SS') -
to_date('2017-03-01 10:00:00', 'YYYY-MM-DD HH24:MI:SS'))
,'HH24:MI:SS')
from dual