orale里是否有处理时间间隔的函数??就是说:根据一个日期,得到多少天、小时、、等后的时间。sql server里就有datediff()函数实现。

解决方案 »

  1.   

    直接用加法就可以,把时间差换算成天,比如计算当前时间后1天5小时30分钟的时间可用:
    select sysdate+1+5/24+30/1440 from dual;
      

  2.   

    oracle9i中新增数据类型 interval day to second 
    函数有:
    numtodsinterval(v_sysdate2-v_sysdate1,'day')
      

  3.   

    CREATE OR REPLACE FUNCTION day_div(p_day NUMBER) 
    RETURN VARCHAR2
    IS
      i NUMBER(20,14);
      h INTEGER;
      m INTEGER;
      s INTEGER;
      result VARCHAR2(20) ;
      d number;
    BEGIN
      i:=p_day;
      --i:=sec/3600;
      IF trunc(i)>0 THEN
        d:=trunc(i);
        i:=i-trunc(i);
      ELSE 
        d:=0;  
      END IF;
      IF i*24>0 THEN
        h:=trunc(i*24);
        i:=i*24-trunc(i*24);
      ELSE 
        h:=0;  
      END IF;
      IF i*60>0 THEN
        m:=trunc(i*60);
        i:=i*60-trunc(i*60);
      ELSE 
        m:=0;
      end if;
      if i*60>0 then
        s:=round(i*60);
      else
        s:=0;
      END IF;
      result:=to_char(d)||'日'||to_char(h)||'时'||to_char(m)||'分'||to_char(s)||'秒';
      RETURN(Result);
    END day_div;
    /SQL> select day_div(sysdate-to_date('2003-1-1','yyyy-mm-dd')) from dual;DAY_DIV(SYSDATE-TO_DATE('2003-
    --------------------------------------------------------------------------------
    86日8时57分20秒
      

  4.   

    http://www.unigd.cn