2011-10-04 66 views
3

我沒有看到hwo這就是ahrd,但我似乎無法在任何地方找到解決方案。它完成日期,但我看不到它爲TIMESTAMP工作。Oracle找到兩個時間戳的平均值

我試圖做

select avg(last_timestmp - ref_timestmp) as average from param

它不斷告訴我這不是一個有效的數字,這是我得到的。但我如何使它成爲有效的數字?我嘗試過提取和其他一些東西,但似乎沒有任何工作。

我想要以秒爲單位的平均值。百分之一秒將是.01和6小時將是21600

謝謝!

回答

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

+0

不一致的數據類型:預期數量得到了DAT – kralco626

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 
)