你的时间的格式是什么?如果是data类型,可以直接的相减。如果是时间戳的话,需要先转换为data类型。

解决方案 »

  1.   

    你好,是时间戳的,网上找了很久,转换成date的话,感觉后面的毫秒数被四舍五入了
      

  2.   

    SELECT (TO_DATE(date2,'yyyy-mm-dd hh24:mi:ss')-TO_DATE(date1,'yyyy-mm-dd hh24:mi:ss'))*86400000-
    (TO_NUMBER(m1)-TO_NUMBER(m2))
    FROM (
    select
    substr(to_char(to_timestamp('2014-01-13 15:40:11.761000','yyyy-mm-dd hh24:mi:ss.ff6'),'yyyy-mm-dd hh24:mi:ss.ff6'),0,19) date1,
    substr(to_char(to_timestamp('2014-01-13 15:40:11.761000','yyyy-mm-dd hh24:mi:ss.ff6'),'yyyy-mm-dd hh24:mi:ss.ff6'),21,3) m1,
    substr(to_char(to_timestamp('2014-01-13 15:40:17.576000','yyyy-mm-dd hh24:mi:ss.ff6'),'yyyy-mm-dd hh24:mi:ss.ff6'),0,19) date2,
    substr(to_char(to_timestamp('2014-01-13 15:40:17.576000','yyyy-mm-dd hh24:mi:ss.ff6'),'yyyy-mm-dd hh24:mi:ss.ff6'),21,3) m2
    from dual
    )不知这样行不行,先计算日期间的毫秒数,然后减去小数的毫秒差。
      

  3.   


    select (to_date(substr(lEndTime, 1, 19), 'yyyy-mm-dd hh24:mi:ss') -
           to_date(substr(lBeginTime, 1, 19), 'yyyy-mm-dd hh24:mi:ss')) * 24 * 3600 * 1000 +
           to_number(substr(lEndTime, 21, 3)) -
           to_number(substr(lBeginTime, 21, 3))
      from dual
    --截取前面的日期相减,后面毫秒数相减。