select 两个日期的时分差
select difference of two dates in hours and minutes
我有以下问题,
我正在尝试以小时和分钟为单位找出两个日期的差异,例如
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;
显然它 returns 天数不同,所以输出将为 0,
我期待 01:15
之类的东西
取决于结果所需的数据类型...
如果 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 不支持间隔的聚合函数;所以如果你需要这些差异的总和,你应该首先应用聚合,并且只在最后一步使用这个技巧转换为一个区间。
如果您需要特定的输出格式,除了@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}')
您可能需要进行一些微调才能获得正确的输出。
我有以下问题, 我正在尝试以小时和分钟为单位找出两个日期的差异,例如
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;
显然它 returns 天数不同,所以输出将为 0, 我期待 01:15
之类的东西取决于结果所需的数据类型...
如果 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 不支持间隔的聚合函数;所以如果你需要这些差异的总和,你应该首先应用聚合,并且只在最后一步使用这个技巧转换为一个区间。
如果您需要特定的输出格式,除了@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}')
您可能需要进行一些微调才能获得正确的输出。