2012-06-04 24 views
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和提取像其他职位提到,但似乎无法得到正确的语法。有任何想法吗?oracle中两个时间戳(以天计)的区别

回答

3

从您的评论判断,您使用的是timestamp列,而不是datetime。你可以使用extract检索小时的时差,然后trunc(.../24)获得天的整数:

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

或者你可以投的timestampdate

trunc(cast(max(end_interval_time) as date) - 
    cast(min(begin_interval_time) as date)) 
+0

这是一个我试图和给我一个错误。 “不一致的数据类型:期望的数字得到INTERVAL DAY TO SECOND” –

+1

提取方法似乎没有工作。它只输出“5”,这是两个小时之间的差异(没有考虑到不同日子)。铸造方法虽然工作!谢谢您的帮助! –