日期:2014-05-17  浏览次数:21151 次

ORACLE DBMS作业执行问题求助
我2月份创建了一个JOB,语句如下:
DECLARE
   JOB NUMBER;
begin
  sys.dbms_job.submit(job,
                      'SP_BIAS_JOB;',
                      to_date('07-02-2014 16:00:00', 'dd-mm-yyyy hh24:mi:ss'),
                      'TRUNC(LAST_DAY(SYSDATE))+22.5/24');
  commit;
end;

要求是每个月的最后一天的22:30执行语句,但到3月份查看的时候,执行的时间不是2月28号的晚上22:30
而是3月1号执行的,请问是什么原因?
执行时间如图:

------解决方案--------------------
应该与你开始时间有关。
LAST_DAY(SYSDATE)取值日期虽然没错,但是时间去的是当前。
比如现在取LAST_DAY(SYSDATE)其值是2014/3/31 14:02:29
在加上你的22.5/24肯定下次执行的时间是第二天了。。

建议开始时间设置为yyyy-mm-dd 00:00:01
------解决方案--------------------
引用:
我2月份创建了一个JOB,语句如下:
DECLARE
   JOB NUMBER;
begin
  sys.dbms_job.submit(job,
                      'SP_BIAS_JOB;',
                      to_date('07-02-2014 16:00:00', 'dd-mm-yyyy hh24:mi:ss'),
                      'TRUNC(LAST_DAY(SYSDATE))+22.5/24');
  commit;
end;

要求是每个月的最后一天的22:30执行语句,但到3月份查看的时候,执行的时间不是2月28号的晚上22:30
而是3月1号执行的,请问是什么原因?
执行时间如图:

interval时间间隔应该是这样吧
TRUNC(LAST_DAY(add_months(sysdate,1)))+22.5/24