你好每个人,我需要获得两个日期(时间戳(的平均值
我试过这个
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
您可以使用
EXTRACT
来获取AVG
秒。
SELECT AVG (EXTRACT (SECOND FROM (sva.endTime - sva.startTime)))
AS avg_seconds
FROM SVATable sva;
这是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)