Hello everyOne我需要获得两个日期差异的平均值(时间戳)
我试过这个
select AVG((sva.endTime - sva.startTime)) as seconds from SVATable sva;
但我收到了错误
93/5000
ORA-00932: Inconsistent data types; expected: NUMBER; got: INTERVAL DAY TO SECOND
答案 0 :(得分:2)
您可以使用EXTRACT
获取AVG
秒。
SELECT AVG (EXTRACT (SECOND FROM (sva.endTime - sva.startTime)))
AS avg_seconds
FROM SVATable sva;
答案 1 :(得分:0)
这是Oracle中的一个潜在问题。您的计算适用于date
数据类型,但不适用于timestamps
。
一种解决方案是从间隔中提取日,小时,分钟和秒。另一种是使用日期算术。您可以使用以下方法获得一天的分数:
select (date '2000-01-01' + (sva.endTime - sva.startTime)) - date '2000-01-01'
您可以使用平均值并转换为秒数:
select avg( (date '2000-01-01' + (sva.endTime - sva.startTime)) - date '2000-01-01') * (60*60*24)