如何在oracle中获得2次的差异(仅次数不是日期)

时间:2014-07-03 05:13:00

标签: oracle

我每天给2次蚂蚁告诉他们在一分钟内找到他们之间的区别。

我知道如何区分2个日期时间,但知道如何获得2次之间的差异。

例如我有时间上午10:00和另一时间下午1:00差异是180分钟。然后10:00 AM到10:10 AM 10分钟差异。 任何人都可以给我一个功能,我将发送2个参数,如时间和时间,结果将返回分钟?

或者,如果可以通过我能找到没有约会的那些时间之间的差异给我任何东西?

2 个答案:

答案 0 :(得分:1)

您可以将VARCHAR中的时间转换为DATE类型。默认情况下,当前月份的第1天将应用于日期部分。 一旦你有这个,它简单地减去日期并乘以24 * 60得到分钟。

(to_date(to_time,'hh12:mi AM') - to_date(from_time,'hh12:mi AM')) * 24 * 60

示例:

SQL Fiddle

with x(y,z) as (
  select '10:00 AM', '1:00 PM' from dual
  )
select y, z,
to_date(y,'hh12:mi AM'),
to_date(z,'hh12:mi AM'),
to_date(z,'hh12:mi AM') - to_date(y,'hh12:mi AM'),
(to_date(z,'hh12:mi AM') - to_date(y,'hh12:mi AM')) * 24 * 60
from x

|        Y |       Z |      TO_DATE(Y,'HH12:MIAM') |      TO_DATE(Z,'HH12:MIAM') | TO_DATE(Z,'HH12:MIAM')-TO_DATE(Y,'HH12:MIAM') | (TO_DATE(Z,'HH12:MIAM')-TO_DATE(Y,'HH12:MIAM'))*24*60 |
|----------|---------|-----------------------------|-----------------------------|-----------------------------------------------|-------------------------------------------------------|
| 10:00 AM | 1:00 PM | July, 01 2014 10:00:00+0000 | July, 01 2014 13:00:00+0000 |                                         0.125 |                                                   180 |

答案 1 :(得分:0)

使用由Eat A Peach提供的to_charto_date的解决方案是一种可能性,另一种是使用trunc

示例:

select (firstdate-trunc(firstdate))-(seconddate-trunc(seconddate))
  from sometable;

结果以天为单位,因此您必须将其乘以1440才能在几分钟内得到它。