两个日期之间的差异,并获得时间戳的结果

时间:2017-01-03 20:16:47

标签: oracle

我正在尝试计算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

1 个答案:

答案 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