Oracle找到两个时间戳的平均值

时间:2011-10-04 16:03:53

标签: sql oracle

我没有看到这是啊,但我似乎无法在任何地方找到解决方案。它已经完成了日期,但我看不到让它适用于TIMESTAMP。

我正在尝试

select avg(last_timestmp - ref_timestmp) as average from param

它一直告诉我这不是一个有效的数字,我得到了。但是如何使它成为有效数字呢?我尝试过提取物和其他一些东西,但似乎没什么用。

我想要平均秒数。百分之一秒是.01,6小时是21600

谢谢!

2 个答案:

答案 0 :(得分:3)

您可以使用EXTRACT以秒为单位输出部件并将其相加然后计算平均值:

select
    avg(extract(second from intrvl)
        + extract(minute from intrvl) * 60
        + extract(hour from intrvl) * 60 * 60
        + extract(day from intrvl) * 60 * 60 * 24) average
from (
    select (last_timestmp - ref_timestmp) intrvl 
    from param
)

答案 1 :(得分:2)

您可以尝试

SELECT AVG(p.last_date - p.ref_date) as average FROM (
  SELECT 
    last_timestamp - TO_DATE('1970-01-01', 'YYYY-MM-DD') \* 8640000 as last_date
    ,ref_timestamp - TO_DATE('1970-01-01', 'YYYY-MM-DD') \* 8640000 as ref_date
  FROM param ) p

这将为您提供毫秒的差异。

请参阅:http://blogs.oracle.com/mock/entry/converting_oracle_dates_to_unix