不管今天是几月几号,写一段sql可以输出上个星期星期一的日期
另外再写一个sql可以输出这个月的1号

解决方案 »

  1.   

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

    select next_day(sysdate,'星期一')-7 from dual;--2.
    select to_char(sysdate,'yyyy-mm')||'-01' from dual;
      

  2.   

    第二个好说,第一个的一周是怎么定义的?周一开始周日结束还是周日开始周6结束?
    SQL> select trunc(sysdate,'mm') from dual;
     
    TRUNC(SYSDATE,'MM')
    -------------------
    2010-9-1
     
    SQL> 
      

  3.   


    select trunc(sysdate) "今天", 
    next_day(trunc(sysdate), 2) - 14 "上个星期一",
    trunc(sysdate, 'mm') "本月1号"
    from dual;今天        上个星期一     本月1号     
    --------- --------- ---------
    21-SEP-10 13-SEP-10 01-SEP-10
      

  4.   

    --返回上个星期一
    SQL> select next_day(to_date('&datetime','yyyymmdd')-14,'星期一') from dual;
    输入 datetime 的值:  20100901
    原值    1: select next_day(to_date('&datetime','yyyymmdd')-14,'星期一') from dual
    新值    1: select next_day(to_date('20100901','yyyymmdd')-14,'星期一') from dualNEXT_DAY(TO_DA
    --------------
    23-8月 -10SQL> /
    输入 datetime 的值:  20100914
    原值    1: select next_day(to_date('&datetime','yyyymmdd')-14,'星期一') from dual
    新值    1: select next_day(to_date('20100914','yyyymmdd')-14,'星期一') from dualNEXT_DAY(TO_DA
    --------------
    06-9月 -10
    --这个月的1号
    SQL> select trunc(to_date('&datetime','yyyymmdd'),'month') from dual;
    输入 datetime 的值:  20100921
    原值    1: select trunc(to_date('&datetime','yyyymmdd'),'month') from dual
    新值    1: select trunc(to_date('20100921','yyyymmdd'),'month') from dualTRUNC(TO_DATE(
    --------------
    01-9月 -10SQL> /
    输入 datetime 的值:  20100803
    原值    1: select trunc(to_date('&datetime','yyyymmdd'),'month') from dual
    新值    1: select trunc(to_date('20100803','yyyymmdd'),'month') from dualTRUNC(TO_DATE(
    --------------
    01-8月 -10
      

  5.   

      1* select next_day(sysdate,'星期一')-14 from dual
    SQL> /NEXT_DAY(SYSDA
    --------------
    13-9月 -10SQL> select trunc(sysdate,'mm') from dual
      2  /TRUNC(SYSDATE,
    --------------
    01-9月 -10