我不认为这是 ahrd,但我似乎无法在任何地方找到解决方案。它是针对日期完成的,但我看不到它是否适用于 TIMESTAMP。
我正在尝试做
select avg(last_timestmp - ref_timestmp) as average from param
它一直告诉我这不是一个有效的数字,我得到了。但是我如何使它成为一个有效的数字?我试过提取物和一堆其他东西,但似乎没有任何效果。
我想要以秒为单位的平均值。百分之一秒是.01
6 小时是21600
谢谢!
您可以使用 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
)
Run Code Online (Sandbox Code Playgroud)
你可以尝试
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
Run Code Online (Sandbox Code Playgroud)
这将为您提供以毫秒为单位的差异。
请参阅:http ://blogs.oracle.com/mock/entry/converting_oracle_dates_to_unix