怎么取到两个精确到毫秒的时间差的绝对值?
比如abs(time1-time2) 会报错,应为数据类型问题....请指教...

解决方案 »

  1.   

    怎么会呢?都是date类型么?不是的话转成同一种类型再相减取abs
      

  2.   

    TIME1,TIME2的精确度是毫秒,相减后得到的是类似于这种+000000000   00:00:01.000数据,但怎么取到相差毫秒的绝对值呢?不如说相差3毫秒(abs(time1,time2)<3)?..
      

  3.   

    abs((time1-time2)*24*60*60) 还是报错的..
      

  4.   

    毫秒的格式 是+000000001 00:00:00.421000  这样的 
    取不了绝对值  to_number也不行
    确实是个问题
      

  5.   

    SQL> select * from t1 where b=1;
     
    A                                                                                 B
    -------------------------------------------------------------------------------- --
    29-7月 -10 12.00.02.458100 下午                                                   1
     
    SQL> SELECT CASE WHEN systimestamp>a THEN 1 END  FROM t1   WHERE b=1 ;
     
    CASEWHENSYSTIMESTAMP>ATHEN1END
    ------------------------------
                                 1
     
    SQL> 
      

  6.   

    用case when 吧,直接取绝对值是不行的
      

  7.   

    case when ts1>ts2 then ts1-ts2
         when ts1<ts2 then ts2-ts1
         else 0
         end
      

  8.   

    9i以上版本可以使用SYSTIMESTAMP,试试以下的方法:    SELECT SUBSTR(SYSTIMESTAMP -CURRENT_TIMESTAMP,2) times FROM dual --使用substr把符号过滤掉 结果:
      000000000 00:00:00.000012