Oracle PLSQL 得到忽略天数的 2 个日期时间字段之间的差异

Oracle PLSQL get difference between 2 datetime fields ignoring days

我想找到最简单的方法来计算来自 Oracle 日期时间字段的 2 个日期之间 小时 的差异,同时 忽略 天数,月份和年份部分。例如:

Datetime 1 (DATE variable) = 10/05/2017 16:00:00
Datetime 2 (DATE variable) = 15/05/2017 19:34:23

Required result (NUMBER output) = 3.576 hours

这是将在 PLSQL 过程中使用的公式,输出需要是一个数字,如上所示。我想 TO_DATE 和 TRUNC 的某种组合可能会起作用。如果这是一个重复的问题,我们将非常感谢您的帮助,我们深表歉意。

使用 sssss 日期掩码仅获取时间元素作为自午夜以来的秒数。那么这只是一个简单的算术问题:

select (to_number(to_char(datetime2, 'sssss')) 
         - to_number(to_char(datetime1, 'sssss')) / 3600 as diff_hours
from dual;

PL/SQL版本一样....

declare
    Datetime1 DATE := to_date('10/05/2017 16:00:00', 'dd/mm/yyyy hh24:mi:ss');
    Datetime2 DATE := to_date('15/05/2017 19:34:23', 'dd/mm/yyyy hh24:mi:ss');
    hours_diff number;
begin
    hours_diff := (to_number(to_char(datetime2, 'sssss')) 
         - to_number(to_char(datetime1, 'sssss'))) / 3600 ;
    dbms_output.put_line(hours_diff);
end;