zoukankan      html  css  js  c++  java
  • oracle中建立job(任务)

     

    --Oracle trunc()函数的用法
    /**************日期********************/
    1.select trunc(sysdate) from dual --2013-01-06 今天的日期为2013-01-06
    2.select trunc(sysdate, 'mm') from dual --2013-01-01 返回当月第一天.
    3.select trunc(sysdate,'yy') from dual --2013-01-01 返回当年第一天
    4.select trunc(sysdate,'dd') from dual --2013-01-06 返回当前年月日
    5.select trunc(sysdate,'yyyy') from dual --2013-01-01 返回当年第一天
    6.select trunc(sysdate,'d') from dual --2013-01-06 (星期天)返回当前星期的第一天
    7.select trunc(sysdate, 'hh') from dual --2013-01-06 17:00:00 当前时间为17:35
    8.select trunc(sysdate, 'mi') from dual --2013-01-06 17:35:00 TRUNC()函数没有秒的精确
    /***************数字********************/
    /*
    TRUNC(number,num_digits)
    Number 需要截尾取整的数字。
    Num_digits 用于指定取整精度的数字。Num_digits 的默认值为 0。
    TRUNC()函数截取时不进行四舍五入
    */
    9.select trunc(123.458) from dual --123
    10.select trunc(123.458,0) from dual --123
    11.select trunc(123.458,1) from dual --123.4
    12.select trunc(123.458,-1) from dual --120
    13.select trunc(123.458,-4) from dual --0
    14.select trunc(123.458,4) from dual --123.458
    15.select trunc(123) from dual --123
    16.select trunc(123,1) from dual --123
    17.select trunc(123,-1) from dual --120

    LAST_DAY(d)

    last_day(date)是个SQL函数,返回本月或其他月最后一天。

    返回特定日期所在月份,不管是当前时间还是其他时间,都会取最后一天。
    特例:
    select last_day(to_date(20170708, 'yyyymmdd')) from dual
    union all
    select last_day(to_date(sysdate)) from dual;
    -----输出------------------------
    2017.7.31
    2017.8.31
    例:
    SQL>SELECT last_day(sysdate) FROM dual;
    LAST_DAY(SYSDATE)
    -----------------------------
    2008-8-31
    例如:找出每个月倒数第三天入职的员工
    SELECT * FROM EMP WHERE last_day(hiredate)-2=hiredate;
     

    last_day(time):返回指定日期所在月份的最后一天;

    查询当前月份的最后一天:

     
    1. select last_day(sysdate) from dual;  

    add_months

    ADD_MONTHS是运算函数,函数将一个日期上加上一指定的月份数,所以,日期中的日是不变的。然而,如果开始日期是某月的最后一天,那么,结果将会调整以使返回值仍对应新的一月的最后一天。如果,结果月份的天数比开始月份的天数少,那么,也会向回调整以适应有效日期。

    简介

    编辑
    日期运算函数
    ADD_MONTHS(d,n)--时间点d再加上n个月
    例子:
    select sysdate, add_months(sysdate,2) aa from dual;
    SYSDATE AA
    21-SEP-07 21-NOV-07
     

    注意

    编辑
    其语法格式如下:
    ADD_MONTHS(date,months)
    其中:
    date 一个日期数值
    months 要加上的月份数。要减去的月份数用负数
    下面的例子解释了该函数的使用:
    ADD_MONTHS(TO_DATE(’15-Nov-1961’,’d-mon-yyyy’),1) =’15-Dec-1961
    ADD_MONTHS(TO_DATE(’30-Nov-1961’,’d-mon-yyyy’),1) =’31-Dec-1961
    ADD_MONTHS(TO_DATE(’31-Jan-1999’,’d-mon-yyyy’),1) =’28-Feb-1999
    注意,在上面的第三个例子中,函数将不得不将31日往回调整为28日,已使结果对应新一月的最后一天。因为,1999年的2月份只有28天。在第二个例子中,则是从30往后调整为31,也同样是为了保持对应的最后一天。

    add_months功能

    ADD_MONTHS函数作为它的第一个参数一个DATETIME或DATE的表达,需要第二个的整数参数,指定的月数添加到第一个参数值。 第二个参数可以是正或负。
    返回的值是第一个参数和一个间隔单位的月份值的月数,第二个参数指定的日期或DATETIME值的总和。
    返回的数据类型取决于第一个参数的数据类型:如果第一个参数的计算结果为一个DATE值,ADD_MONTHS返回一个日期值。如果第一个参数的计算结果为一个DATETIME值,ADD_MONTHS分数(5)值返回一个DateTime的一年, 一天中的第一个参数为时间单位相同的价值观。 如果一天 一个月的时间单位,并在第一个参数指定月份的最后一天,如果一个月少天比一天中的第一个参数,则返回值是最后一天所产生的一个月。 否则,返回值,作为第一个参数月份的同一天。
    返回值可以在不同的年份,如果一个月后比12月的一年中的第一个参数(或负早于1月的第二个参数,)。
    下面的查询调用的ADD_MONTHS函数两次投影子句中,作为参数使用列表达式。 这里的列名指示列的数据类型,并DBDATE设置MDY4 /:
    选择a_serial,b_date,ADD_MONTHS(b_date,a_serial) c_datetime,ADD_MONTHS(c_datetime,a_serial)从mytab WHERE a_serial = 7;在这个例子ADD_MONTHS返回DATE和DATETIME值中: a_serial 7 b_date 07/06/2007 (表达)02/06/2008 c_datetime 2007-10-06 16:47:49.00000 (表达)2008-05-06 16:47:49.00000如果您使用的Informix ®主机变量来存储ADD_MONTHS的参数,但在准备时间不知道该参数的数据类型,假定的数据类型为datetime年分数(5)。 如果在运行时,已经准备的发言后,用户提供了一个DATE值的主机变量,错误-9750发出。 要避免这个错误,使用强制指定的宿主变量的数据类型,在这个程序片段:的sprintf(查询“,”选择ADD_MONTHS(日期:6)从mytab“吗?); EXEC SQL准备selectq:查询; EXEC SQL声明selectq select_cursor光标;使用EXEC SQL开放select_cursor:hostvar_date_input; EXEC SQL FETCH select_cursor到:var_date_output;

    ---一下摘自博客园(作者:shang神  地址: http://www.cnblogs.com/shangshen/p/6803762.html)

    数据库Job定时任务

    数据库Job再熟悉不过了,因为经常要数据库定时的自动执行一些脚本,或做数据库备份,或做数据的提炼,或做数据库的性能优化,包括重建索引等等的工作。但是,Oracle定时器Job时间的处理上,千变万化,今天我把比较常用写法汇总如下:

    在总结之前,先把Job的参数一一说明一下:

    job参数是由Submit()过程返回的binary_ineger。这个值用来唯一标识一个工作;

    what参数是将被执行的PL/SQL代码块;

    next_date参数指识何时将运行这个工作。写Job的时候可以不指定该值;

    interval参数何时这个工作将被重执行。

    其中Interval这个值是决定Job何时,被重新执行的关键。

    例如:有存储过程 userdatacopytoeseg,需要被不同的时间间隔执行。

    declare
    jobno number;

    begin

    sys.dbms_job.submit(job => :job,
    what => 'userdatacopytoeseg;',
    next_date => to_date('04-05-2017 02:00:00', 'dd-mm-yyyy hh24:mi:ss'),
    interval => 'TRUNC(sysdate) + 1 +2 / (24)');
    commit;
    end;

    查询Job任务

    select * from DBA_JOBS

    修改进程数
    alter system set job_queue_processes=10 scope=both;
     

    1、 每分钟执行

    Interval => TRUNC(sysdate,’mi’) + 1 / (24*60)

    2、 每天定时执行

    例如:每天的凌晨2点执行

    Interval => TRUNC(sysdate) + 1 +2 / (24)

    3、 每周定时执行

    例如:每周一凌晨2点执行

    Interval => TRUNC(next_day(sysdate,2))+2/24 --星期一,一周的第二天

    4、 每月定时执行

    例如:每月1日凌晨2点执行

    Interval =>TRUNC(LAST_DAY(SYSDATE))+1+2/24

    5、 每季度定时执行

    例如每季度的第一天凌晨2点执行

    Interval => TRUNC(ADD_MONTHS(SYSDATE,3),'Q') + 2/24

    6、 每半年定时执行

    例如:每年7月1日和1月1日凌晨2点

    Interval => ADD_MONTHS(trunc(sysdate,'yyyy'),6)+2/24

    7、 每年定时执行

    例如:每年1月1日凌晨2点执行

    Interval =>ADD_MONTHS(trunc(sysdate,'yyyy'),12)+2/24

    当然上面罗列不可能照顾到方方面面,但是稍微变化一下,就能衍生出无数的例子,聪明的你一定会的吧,我这里就不多罗嗦了。

  • 相关阅读:
    JS判断页面是否加载完成
    简单的前端验证码
    如何让旧浏览器支持HTML5新标签
    JSON使用(4)
    JSON语法(3)
    JSON简介(2)
    JSON教程(1)
    jQuery-noConflict()
    jQuery
    jQuery
  • 原文地址:https://www.cnblogs.com/520future/p/7483254.html
Copyright © 2011-2022 走看看