我有以下问题, 我正在尝试以小时和分钟为单位找出两个日期的差异,例如
select to_date('13.05.2021 09:30','DD.MM.YYYY HH24:MI')
- to_date('13.05.2021 08:15','DD.MM.YYYY HH24:MI') from dual;
显然它返回天数差异,因此输出将为0, 我期待 01:15 之类的东西
答案 0 :(得分:1)
根据您的结果所需的数据类型...
如果 interval day to second
可以工作,那么您可以这样做:
select (date2 - date1) * interval '1' day from dual;
例如:
select (to_date('13.05.2021 09:30','DD.MM.YYYY HH24:MI')
- to_date('13.05.2021 08:15','DD.MM.YYYY HH24:MI'))
* interval '1' day as diff
from dual;
DIFF
-------------------
+00 01:15:00.000000
试试这个;如果您需要不同的结果数据类型,请告诉我们。请注意,愚蠢的是,Oracle 不支持间隔的聚合函数;所以如果你需要一个这样的差异的总和,你应该先应用聚合,最后一步只使用这个技巧来转换为间隔。
答案 1 :(得分:0)
除了@mathguy 回答之外,如果您需要特定的输出格式:
TO_CHAR
不适用于 INTERVAL
值。要么使用 EXTRACT
EXTRACT(HOUR FROM ((date2 - date1) DAY TO SECOND)) ||':'|| EXTRACT(MINUTE FROM ((date2 - date1) DAY TO SECOND))
REGEXP_SUBSTR((date2 - date1) DAY TO SECOND, ' \d{2}:\d{2}')
您可能需要进行一些微调以获得正确的输出。