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;
我想找到最简单的方法来计算来自 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;