Oracle - 用于获取两个DateTime列之间的差异的最佳SELECT语句?

Oracle - 用于获取两个DateTime列之间的差异的最佳SELECT语句?

问题描述:

我试图完成一个来自客户端的相当困难的报告请求,而且我需要在几分钟内找到两个DateTime列之间的差异。我试图使用trunc和各种各样的formats,似乎无法想出一个有意义的组合。有没有一个优雅的方式来做到这一点?如果没有,是否有任何方式来做到这一点?Oracle - 用于获取两个DateTime列之间的差异的最佳SELECT语句?

SELECT date1 - date2 
    FROM some_table 

返回天的差异。乘以24乘以小时和24 * 60得到分钟的差异。所以

SELECT (date1 - date2) * 24 * 60 difference_in_minutes 
    FROM some_table 

应该是你在找什么

+0

这个链接已经变味。 – Tony 2012-01-31 01:05:42

+0

@Tony那么糟糕 - 那是一个受欢迎的页面... – 2012-01-31 01:55:34

默认情况下,Oracle日期减法返回天#的结果。

所以只需乘以24得到小时数,再乘以60分钟。

例子:

select 
    round((second_date - first_date) * (60 * 24),2) as time_in_minutes 
from 
    (
    select 
    to_date('01/01/2008 01:30:00 PM','mm/dd/yyyy hh:mi:ss am') as first_date 
    ,to_date('01/06/2008 01:35:00 PM','mm/dd/yyyy HH:MI:SS AM') as second_date 
    from 
    dual 
) test_data