知道一个日期,如何找到这个日期所在的周的周一,周日?如何找到这个日期所在月的1号和30号(或者31号)?谢谢

解决方案 »

  1.   

    select 
        to_char(sysdate,'YYYY_MM')||'_01',
        to_char(last_day(sysdate),'YYYY_MM_DD')
    from
        dual
      

  2.   

    demo@XIAOXIAO>select trunc(sysdate,'mm') from dual
      2  /TRUNC(SYSDATE,'MM')
    -------------------
    2006-11-01 00:00:00demo@XIAOXIAO>select last_day(sysdate) from dual;LAST_DAY(SYSDATE)
    -------------------
    2006-11-30 14:33:39
      

  3.   

    SQL> select trunc(&sdate-1) - to_number(to_char(&sdate-1,'d')) + 2 as begindate,
      2         trunc(&sdate-1) - to_number(to_char(&sdate-1,'d')) + 8 as enddate
      3         from dual ;
      

  4.   

    select trunc(next_day(sysdate,1))-7,trunc(next_day(sysdate,2))-7,trunc(next_day(sysdate,1)) from dual
      

  5.   

    SELECT TO_CHAR(to_date('2006-11-08','yyyy-mm-dd'),'D') 周三,
       TO_CHAR(to_date('2006-11-08','yyyy-mm-dd'),'DD') 第几天,
       TO_CHAR(to_date('2006-11-12','yyyy-mm-dd'),'D') 周日,
       TO_CHAR(to_date('2006-11-12','yyyy-mm-dd'),'DD')  第N天
    FROM DUAL
    周三 第几天 周日 第N天
    ---- ------ ---- -----
    4    08     1    12   
    1 row selected
      

  6.   

    Ora的内部函数里面好像只有月的第一天和最后一天,其他的自己编程实现吧!
      

  7.   

    SELECT sysdate,
    TRUNC(SYSDATE -1,'DAY') +1 "W1" ,
    TRUNC(SYSDATE -1,'DAY') +7 "W7" ,
    TRUNC(SYSDATE,'MM') "Month1" ,
    TRUNC(last_day(SYSDATE )) "Month_end"
    FROM DUAL;
      

  8.   

    >如何找到这个日期所在的周的周一,周日?
    1、日期‘20040723’所在的周的周一:
     select   to_char(next_day( TO_DATE('20040723','YYYYMMDD'),1)-7,'YYYYMMDD') from dual2、日期‘20040723’所在的周的周日:
     select   to_char(next_day( TO_DATE('20040723','YYYYMMDD'),7)-7,'YYYYMMDD') from dual
      

  9.   

    TRUNC(next_day(d -7,2))  "W1" ,
        TRUNC(next_day(d -8,1))+7  "W7" ,
      

  10.   

    select next_day(sysdate-7,2) from dual;周一
    select next_day(sysdate,1) from dual;周日
      

  11.   

    to:wyc2000(工人)
    >select next_day(sysdate,1) from dual;周日
    这个不-7就是下一周的周日了!
      

  12.   

    SELECT DECODE(TO_CHAR(TO_DATE('2006-11-11', 'yyyy-mm-dd'), 'D'),
                  '1',
                  '7',
                  TO_CHAR(TO_DATE('2006-11-11', 'yyyy-mm-dd'), 'D') - 1)
      FROM DUAL