有如下函数,如何给date型的startDateTime加nIntervals秒呢?
我下面的函数报错:PLS-00363
CREATE OR REPLACE FUNCTION BW_COMMON_DateAdd ( 
   IntervalType      char(4),
   nIntervals   number,
   startDateTime   date
)   RETURN date
BEGIN   IF (trim(IntervalType) = 's') 
   THEN
       startDateTime := startDateTime + nIntervals/(24*60*60);
   END IF;
      RETURN startDateTime;END BW_COMMON_DateAdd;
/

解决方案 »

  1.   

    SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),to_char(sysdate+2/24/3600,'
    yyyy-mm-dd hh24:mi:ss') from dual;TO_CHAR(SYSDATE,'YY TO_CHAR(SYSDATE+2/2
    ------------------- -------------------
    2008-02-04 15:05:31 2008-02-04 15:05:33+n/24/3600
      

  2.   


    select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') "Date",
    to_char(sysdate+1/24/60/60,'yyyy-mm-dd hh24:mi:ss') "1 SecondLater"
    from dual
    --------------------------
        Date 1 SecondLater
    1 2007-02-04 15:06:23 2007-02-04 15:06:24
      

  3.   

    原因:
    以下这条语句出错。
    startDateTime   :=   startDateTime   +   nIntervals/(24*60*60); startDateTime是输入变量,只读。解决方案:增加一个临时变量;或者IF (trim(IntervalType) = 's') THEN 
      RETURN startDateTime + nIntervals/(24*60*60); 
    ELSE
      RETURN NULL;
    END IF;