我有两表示时间位的字段﹐类型为varchar2(5),值的格式为 08:10
Start_time 为起始时间﹐ end_time 为结束时间 怎么查询出   结束时间-开始时间  如 :8:30-:7:50=0:40, 这种 样子
怎么处理?
数据库 8i

解决方案 »

  1.   

    to_date(Start_time, 'hh24:mi')-to_date(end_time, 'hh24:mi')
      

  2.   

    to_char(to_date(end_time, 'hh24:mi')-to_date(start_time, 'hh24:mi'),'hh24:mi')
      

  3.   

    用TIMESTAMP来做吧.
     具體
      

  4.   

    不嫌麻烦的话,可以这样做:select trunc((to_date(end_time, 'hh24:mi')-to_date(start_time, 'hh24:mi'))*24)||':'||
            round(((to_date(end_time, 'hh24:mi')-to_date(start_time, 'hh24:mi'))*24 - trunc((to_date(end_time, 'hh24:mi')-to_date(start_time, 'hh24:mi'))*24))*60)
     from tabname;示例:
    SQL> select trunc((to_date('08:30','hh24:mi')-to_date('07:50','hh24:mi'))*24)||':'||
      2          round(((to_date('08:30','hh24:mi')-to_date('07:50','hh24:mi'))*24 -
      3          trunc((to_date('08:30','hh24:mi')-to_date('07:50','hh24:mi'))*24))*60)
      4   from dual;TRUNC((TO_DATE('08:30','HH24:M
    --------------------------------------------------------------------------------
    0:40
      

  5.   

    select to_char(to_date(Start_time,'hh24:mi')-to_date(End_time,'hh24:mi')+to_date('00:00','hh24:mi'),'hh24:mi') from table
      

  6.   

    SQL> select to_char(interval '8:20' hour to minute - interval '7:40' hour to minute,'hh24:mi') from dual;TO_CHAR(INTERVAL'8:20'HOURTOMI
    ------------------------------
    +000000000 00:40:00.000000000SQL> select to_char(trunc(sysdate) + interval '8:20' hour to minute - interval '7:40' hour to minute,'hh24:mi') from dual;TO_CHAR(TRUNC(SYSDATE)+INTERVA
    ------------------------------
    00:40
      

  7.   

    SQL> select * from d;A     B
    ----- -----
    08:30 07:50
    20:14 15:21SQL> select to_char(to_date(a,'hh24:mi')-to_date(b,'hh24:mi')+to_date('00:00','h
    h24:mi'),'hh24:mi') from d;TO_CH
    -----
    00:40
    04:53SQL>
      

  8.   

    尋兄的 select to_char(trunc(sysdate) + interval '8:20' hour to minute - interval '7:40' hour to minute,'hh24:mi') from dual;怎么換成我的欄位就出錯啊水清兄的也不錯