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

时间:2017-05-15 15:45:58

标签: oracle datetime plsql date-arithmetic

我想找到最简单的方法来计算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可能会奏效。如果这是一个重复的问题,那么任何帮助都会得到最大的帮助和道歉。

1 个答案:

答案 0 :(得分:4)

使用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;