如何获得两个日期之间的小时差?

Posted

技术标签:

【中文标题】如何获得两个日期之间的小时差?【英文标题】:How can I get the difference in hours between two dates? 【发布时间】:2012-02-28 19:34:54 【问题描述】:

我必须执行“选择”,以返回数据库中日期类型字段与当前日期(以小时为单位)之间的差异。我如何在 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;

但这没有用。

【问题讨论】:

【参考方案1】:

该错误是因为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;

【讨论】:

【参考方案2】:

两个日期之间的小时和分钟差异

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
);

两个日期之间的时间差(截断)

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
);

【讨论】:

我使用您的查询在 HH:MI:SS SELECT TO_CHAR(TRUNC(Seconds_ / (60*60)),'FM9900') || ':' || TRUNC(MOD(Seconds_, 60*60)/60) || ':' || MOD(Seconds_, 60) elapsed_time FROM ( SELECT (sysdate - (sysdate-31.26/24)) * 24 * 60 * 60 AS Seconds_ FROM dual );987654324@ 中获得了我想要的输出【参考方案3】:

我是这样做的:

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

另外,您可以检查几分钟:Oracle : how to subtract two dates and get minutes of the result

【讨论】:

【参考方案4】:
select trunc((sysdate - to_date('2012-02-28 15:20', 'YYYY-MM-DD hh24:mi')) / 24)
  from dual;

【讨论】:

当在 Oracle 中减去两个不同的日期时,它每天返回 1,一个小时返回 1/24 你应该乘以 24 来获得日期差异的小时数。

以上是关于如何获得两个日期之间的小时差?的主要内容,如果未能解决你的问题,请参考以下文章

如何在bigquery中获得浮动或十进制的两个日期时间之间的小时差

在 Moment Js 中获取两个日期之间的小时差

如何获得两个日期的时差,例如 x 天 y 小时 z 秒 t 分钟 [重复]

两个日期融合交通情报(分析)之间的时差

如何获取两个日期时间字段的轨道分钟时差?

查找两个最近订单之间的时差