平均时间戳预言机与毫秒



你好每个人,我需要获得两个日期(时间戳(的平均值

我试过这个

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)

最新更新