解决方案 »

  1.   

    这个设计表结构的话需要考虑将来可能的拓展,尽可能涵盖所有时间设置方式
    时间字段肯定需要单独存储的,这个没有问题表结构设计话可以这样
    时间、日期的设置方式、日期掩码、日期设置值常见的日期设置方式
    1、指定具体日期 对应掩码 YYYYMMDD
    2、每年的某一天 对应掩码 MMDD
    3、每月的某一天 对应掩码 DD
    4、每周的某一天 对应掩码 D
    5、每天都执行 这个判断的时候需要单独处理如楼主要求的 每周一、二、三的15:00运行就可以这样存储
    时间:15:00
    日期设置方式: 每周的某一天
    日期掩码:DD
    日期设置值:2,3,4
    然后就可以通过判断to_char(sysdate,日期掩码)是否包含在 日期设置值中 来判断今天是否需要执行有点乱,不知道说没说清楚
      

  2.   

    #6的日起设置值分开存放比较好,
    2,3,4分为三行,这样之后如果有类似 查询周二某一时间段所有运行的job 的需求时,扩展性比较好。正则虽然可以做,但是损失了索引,以后无法优化。
      

  3.   


    -- 两个语句,你研究一下
    select to_char(sysdate, 'dd') day,
           to_char(sysdate, 'd') - 1 weekday,
           to_char(sysdate, 'hh24:mi') hour_min
      from dual
    --   '02,05,09,15,28,10,31' 这个字符串,存到一个列,就是你那天要执行,判定当天的是几号,直接用一个 instr 就可以得到;
    -- 再把周几也同样存起来,同样的方法判定 用一个 and 就可以了;
    select case
             when instr('02,05,09,15,28,10,31', to_char(sysdate, 'dd')) > 0 then
              '可以执行'
             else
              '不用执行'
           end
      from dual