在SQL server 中DATEDIFF函数,在Oracle中用那个?帮忙,谢谢.

解决方案 »

  1.   

    SELECT (d1-d2)*24*60*60 vaule FROM DUAL;
      

  2.   

    create or replace function 
    -- -- works in roughly the same way as sybase datsdiff
    -- call would be eg. datediff('month',date1,date2)
    -- p_what would be 'HOUR', 'DAY','MONTH' OR 'QUARTER'
    datediff( p_what in varchar2,
              p_d1   in date,
             p_d2   in date ) return number
    as
    l_result    number;
    begin
        l_result:=null;
        if (upper(p_what) = 'HOUR') then
          l_result:=((p_d2-p_d1)*24);
        end if;
        if (upper(p_what) = 'DAY') then
          l_result:=(p_d2-p_d1);
        end if;
        if (upper(p_what) = 'MONTH') then
          l_result:=round(MONTHS_BETWEEN(p_d2,p_d1),0);
        end if;
        if (upper(p_what) = 'QUARTER') then
          l_result:=((floor(MONTHS_BETWEEN(p_d2,TRUNC(p_d2,'YEAR'))/3)+1) - (floor(MONTHS_BETWEEN(p_d1,TRUNC(p_d1,'YEAR'))/3)+1) + (((to_char(p_d2, 'yyyy')) - (to_char(p_d1, 'yyyy')))*4));
        end if;
      l_result:=floor(l_result);
      return l_result;
    end;
    /
    SQL> SELECT DATEDIFF('MONTH','11-JUL-1975','07-JUN-2004') FROM DUAL;DATEDIFF('MONTH','11-JUL-1975','07-JUN-2004')
    ---------------------------------------------
                                              347
      

  3.   

    Oracle没有DATEDIFF函数,要自定义了!!
      

  4.   

    找了好久也没找到定义的比较好用的 Oracle DateDiff 函数.
      

  5.   

    在oracle中计算时间的差值,直接两个时间相减,得到的结果就是天数,然后*24得到小时数,要得到其他结果直接乘法计算就可以了。
      

  6.   


    同一天 当然相差是0天了Select  to_number(to_date('2011-05-01 05:00:00','yyyy-mm-dd hh24:mi:ss')-to_date('2011-05-01','yyyy-mm-dd hh24:mi:ss'))*24 From dual没明白楼上的意思
      

  7.   

    oracle中两个date类型的字段可以直接相减的,如d1-d2,单位是“天”(可能带小数位),再转换成你要的小时、分、月,等等。如果参数是字符串形式的话,可以用to_date(),转换成相应的date类型