oracle9i 中,两个字段分别是starttime,endtime,怎样用oracle将这两个时间格式的数据相减,格式是X小时Y分钟?
不胜感激!

解决方案 »

  1.   

    select select trunc(starttime-endtime)*24) ,
    mod((starttime-endtime)*24*60,60) 
    from tab
      

  2.   

    select to_date(endtime,'hh24:mi') - to_date(starttime,'hh24:mi') from dual
      

  3.   

    我试了试怎么数据不对呀,endtime=2010-06-28  07:32:52,starttime=2010-06-28 04:24:58,相减后是3个多小时,用大侠的语句怎么算出来是7.9呢?
      

  4.   

    我试了试怎么数据不对呀,endtime=2010-06-28 07:32:52,starttime=2010-06-28 04:24:58,相减后是3个多小时,用大侠的语句怎么算出来是7.9呢?
      

  5.   

    select to_date('2010-06-28 07:32:52', 'yyyy-mm-dd HH:mi:ss') endtime,
           to_date('2010-06-28 04:24:58', 'yyyy-mm-dd HH:mi:ss') starttime,
           (to_date('2010-06-28 07:32:52', 'yyyy-mm-dd HH:mi:ss') -
           to_date('2010-06-28 04:24:58', 'yyyy-mm-dd HH:mi:ss')) * 24 相差小时数
      from dual
      

  6.   

    SELECT floor((p.trans_time - p.submit_time) * 24) || '小时' ||
     floor(((p.trans_time - p.submit_time) * 24 -
     floor((p.trans_time - p.submit_time) * 24)) * 60) || '分钟'
    FROM ibp_payment_order_tab p
    把表名换成你的表名,submit_time,trans_time换成你的start_time,end_time就好了
      

  7.   


    就是三个多小时阿
    select (to_date('2010-06-28 07:32:52', 'yyyy-mm-dd hh24:mi:ss') -
           to_date('2010-06-28 04:24:58', 'yyyy-mm-dd hh24:mi:ss')) * 24 difference
      from dual;
    result:
    3.13166666666667