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