sql – 如何平均时间间隔?
发布时间:2020-12-12 16:29:23 所属栏目:MsSql教程 来源:网络整理
导读:在Oracle 10g中,我有一个表格,其中显示了某些操作花费多长时间的时间戳.它有两个时间戳字段:starttime和endtime.我想找到这些时间戳给出的持续时间的平均值.我试试: select avg(endtime-starttime) from timings; 但得到: SQL Error: ORA-00932: inconsist
在Oracle 10g中,我有一个表格,其中显示了某些操作花费多长时间的时间戳.它有两个时间戳字段:starttime和endtime.我想找到这些时间戳给出的持续时间的平均值.我试试:
select avg(endtime-starttime) from timings; 但得到:
这样做: select avg(extract( second from endtime - starttime) + extract ( minute from endtime - starttime) * 60 + extract ( hour from endtime - starttime) * 3600) from timings; 但真的很慢 任何更好的方式将间隔转换成秒数,还是其他方法呢? 编辑: FUNCTION fn_interval_to_sec ( i IN INTERVAL DAY TO SECOND ) RETURN NUMBER IS numSecs NUMBER; BEGIN numSecs := ((extract(day from i) * 24 + extract(hour from i) )*60 + extract(minute from i) )*60 + extract(second from i); RETURN numSecs; END; 解决方法最干净的方法是编写自己的聚合函数来执行此操作,因为它将最干净地处理这个(处理子秒分辨率等).事实上,这个问题在asktom.oracle.com一回((包括源代码))提出(并回答). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |