2
SELECT MIN (snap_id) AS FIRST_SNAP,
     MAX (snap_id) AS LAST_SNAP,
     MIN (BEGIN_INTERVAL_TIME) AS FIRST_QUERY,
     MAX (END_INTERVAL_TIME) AS LAST_QUERY,
     max(end_interval_time) - min(begin_interval_time) as "TIME_ELAPSED"
FROM dba_hist_snapshot
ORDER BY snap_id;

2931    3103    5/28/2012 6:00:11.065 AM    6/4/2012 11:00:40.967 AM    +07 05:00:29.902000

我希望最后一列输出为 7(对于这些天)。我已经尝试过 trunc 和 extract 就像提到的其他一些帖子一样,但似乎无法正确使用语法。有任何想法吗?

4

1 回答 1

4

从您的评论来看,您使用的是timestamp列,而不是datetime. 您可以使用extract来检索小时差,然后trunc(.../24)获取整个天数:

trunc(extract(hour from max(end_interval_time) - min(begin_interval_time))/24)

或者您可以将其timestamp转换为date

trunc(cast(max(end_interval_time) as date) -
    cast(min(begin_interval_time) as date))
于 2012-06-04T17:02:22.257 回答