select avg(fieldA - fieldB) from tableA
两个Timpstamp的字段相减之后,出来的结果是类似于(000000000 00:00:00.000000000)这样的东东,然后做avg就会报错。
那么之句SQL应该怎么改阿?

解决方案 »

  1.   

    求两日期某一部分的差(比如秒)
    SELECT (d1-d2)*24*60*60 vaule FROM DUAL;
      

  2.   

    希望得到结果是秒单位的,要至少带有三位小数。
    现在想了下面的办法来解决,但是还是觉得太麻烦。
    有没有更好的方法
    select avg( 
                    ( to_date(to_char(fieldA,'yyyy/mm/dd hh24:mi'), 'yyyy/mm/dd hh24:mi') - 
                        to_date(to_char(fieldB,'yyyy/mm/dd hh24:mi'), 'yyyy/mm/dd hh24:mi')  ) * 24*3600 + 
                    ( to_number(to_char(fieldA, 'ssxff'))  - to_number(to_char(fieldB,'ssxff'))
                     )  as aaa 
    from TableA;
      

  3.   

    timestamp兴确实有这个问题,支持的函数太少了。
    虽然都是一定精度(毫秒甚至更小)的数值,但是相减之后得知不能直接To_number。
    这一点很不方便。
    可能只有搂主的方法了