平均时间戳oracle,以毫秒为单位

时间:2018-03-13 10:37:19

标签: sql oracle oracle11g timestamp

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

2 个答案:

答案 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)