请问,oracle谁能用一个语句中列出2012年每月第二周星期二的日期

解决方案 »

  1.   


    select next_day(add_months(trunc(sysdate,'yyyy'),rownum-1),1)+2 from dual connect by rownum<13;
      

  2.   


    --上面錯了,這個
    select next_day(add_months(trunc(sysdate,'yyyy'),rownum-1),1)
    +decode(next_day(add_months(trunc(sysdate,'yyyy'),rownum-1),1),add_months(trunc(sysdate,'yyyy'),rownum-1)+7,-5,2)
    from dual connect by rownum<13;
      

  3.   

    构造年份的每天日期  提取每月第二个周二的日期
    select c1
    from 
    (
    select to_date(2012||'-01-01','yyyy-mm-dd')+level c1
    from dual
    connect by level < 366
    )
    where to_char(c1,'w') = 2 and  to_char(c1,'d') = 3
          c1
    ---------------------
    1 2012/1/10
    2 2012/2/14
    3 2012/3/13
    4 2012/4/10
    5 2012/5/8
    6 2012/6/12
    7 2012/7/10
    8 2012/8/14
    9 2012/9/11
    10 2012/10/9
    11 2012/11/13
    12 2012/12/11