Oracle 如何计算两次约会之间的小时差?

Oracle 如何计算两次约会之间的小时差?,oracle,Oracle,我必须执行一个“选择”,返回数据库中日期类型字段与当前日期(小时)之间的差值。在oracle中如何执行此操作 我试试这个: select 24 * (to_date(sysdate, 'YYYY-MM-DD hh24:mi') - to_date('2012-02-28 15:20', 'YYYY-MM-DD hh24:mi')) diff_hours from dual; 但这不起作用。错误是因为SYSDATE已经是一个日期,因此不需要使用to_date()

我必须执行一个“选择”,返回数据库中日期类型字段与当前日期(小时)之间的差值。在oracle中如何执行此操作

我试试这个:

   select 24 * (to_date(sysdate, 'YYYY-MM-DD hh24:mi') 
         - to_date('2012-02-28 15:20', 'YYYY-MM-DD hh24:mi')) diff_hours 
   from dual;

但这不起作用。

错误是因为SYSDATE已经是一个日期,因此不需要使用
to_date()
将其转换为日期

如果不将其转换为日期:

select
    24 * (sysdate - to_date('2012-02-28 15:20', 'YYYY-MM-DD hh24:mi')) as diff_hours
from dual;
如果日期格式错误,可以使用以下两个步骤:

select
    24 * (to_date(to_char(sysdate, 'YYYY-MM-DD hh24:mi'), 'YYYY-MM-DD hh24:mi') - to_date('2012-02-28 15:20', 'YYYY-MM-DD hh24:mi')) as diff_hours
from dual;
我是这样做的:

select to_number(to_char(sysdate,'HH24')) - to_number(to_char(*YOUR_DATA_VALUE*,'HH24')),max(exp_time)  from ...

此外,您还可以检查分钟数:

以小时和分钟为单位的两个日期之间的差异

SELECT     TRUNC(minutes_ / 60) || ' Hours, ' || TRUNC(MOD(minutes_,  60)) || ' Minutes'  diference
FROM     ( SELECT  (sysdate - to_date('16/10/2019 18:45:00', 'DD/MM/YYYY HH24:MI:SS')) * 24 * 60     AS minutes_
  FROM     dual
);

以小时为单位的两个日期之间的差异

SELECT     ROUND(minutes_ / 60, 2) || ' Hours ' 
FROM     ( SELECT  (sysdate - to_date('16/10/2019 18:45:00', 'DD/MM/YYYY HH24:MI:SS')) * 24 * 60     AS minutes_
  FROM     dual
);

以小时为单位的两个日期之间的差异(截断)


在Oracle中,当减去两个不同的日期时,每天返回1,小时返回1/24。您应该将日期差乘以24得到小时。
SELECT     ROUND(minutes_ / 60, 2) || ' Hours ' 
FROM     ( SELECT  (sysdate - to_date('16/10/2019 18:45:00', 'DD/MM/YYYY HH24:MI:SS')) * 24 * 60     AS minutes_
  FROM     dual
);
SELECT     ROUND(minutes_ / 60, 2) || ' Hours ' 
FROM     ( SELECT  (sysdate - to_date('16/10/2019 18:45:00', 'DD/MM/YYYY HH24:MI:SS')) * 24 * 60     AS minutes_
  FROM     dual
);