在Oracle中,是否有一个函数可以计算两个日期之间的差异?

Ton*_*ony 1 oracle plsql

在Oracle中,是否有一个函数可以计算两个日期之间的差异?如果没有,是一种以小时和分钟显示两个日期之间差异的方法吗?

查询:

SELECT Round(max((EndDate - StartDate ) * 24), 2) as MaximumScheduleTime,
       Round(min((EndDate - StartDate) * 24), 2)  as MinimumScheduleTime,
       Round(avg((EndDate - StartDate) * 24), 2) as AveragegScheduleTime
FROM table1
Run Code Online (Sandbox Code Playgroud)

Mar*_*ood 10

您可以在Oracle中减去两个日期.结果是FLOAT,表示两个日期之间的天数.您可以对小数部分进行简单的算术运算来计算小时,分钟和秒.

这是一个例子:

SELECT TO_DATE('2000/01/02:12:00:00PM', 'yyyy/mm/dd:hh:mi:ssam')-TO_DATE('2000/01/01:12:00:00AM', 'yyyy/mm/dd:hh:mi:ssam') DAYS FROM DUAL
Run Code Online (Sandbox Code Playgroud)

结果:1.5


Mic*_*Ang 8

您可以使用以下功能:

1)EXTRACT(元素FROM temporal_value)

2)NUMTOYMINTERVAL(n,单位)

3)NUMTODSINTERVAL(n,单位).

例如 :

SELECT EXTRACT(DAY FROM NUMTODSINTERVAL(end_time - start_time, 'DAY'))
   || ' days ' || 
   EXTRACT(HOUR FROM NUMTODSINTERVAL(end_time - start_time, 'DAY'))
   ||':'|| 
   EXTRACT(MINUTE FROM NUMTODSINTERVAL(end_time - start_time, 'DAY')) 
   ||':'||
   EXTRACT(SECOND FROM NUMTODSINTERVAL(end_time - start_time, 'DAY')) 
   "Lead Time"
FROM table;
Run Code Online (Sandbox Code Playgroud)