在确定某天所在的周是一年第几周的时候出现问题,请教各位:
如2009年1月1日和1月6日分别应属于2009年的第一周和第二周,但用to_char(sysdate,'FMWW'),这两天均属于第一周,请问如何判断?

解决方案 »

  1.   

    SELECT TO_CHAR(SYSDATE,'WW') FROM DUAL; 
      

  2.   

    抱歉记错了,应该是 SELECT TO_CHAR(SYSDATE,'iw') FROM DUAL; 
      

  3.   

    select sysdate,
    (CASE WHEN to_char(sysdate,'d')<to_char(TO_DATE(TO_CHAR(SYSDATE,'YYYY')||'0101','YYYYMMDD'),'d') 
    THEN TO_NUMBER(to_char(sysdate,'FMWW'))+1
    ELSE
    TO_NUMBER(to_char(sysdate,'FMWW')) END) 
    from dual
      

  4.   

    我回复过的一个帖子,和你的情况很类似,我是通过自定义函数实现的
    代码如下create or replace function testweek(rq in date) return varchar2
    is   week varchar2(10);strrq varchar2(10);
    yyyy varchar2(10);
    begin
         select to_char(rq,'yyyy') into yyyy from dual;
         select to_char(rq,'iw') into week from dual;
         select to_char(rq,'mm') into strrq from dual;
         if week='53' and strrq='01' then 
         week:=1;
         else week:=week+1;
         end if;
         week:=yyyy||'-'||week;
         
         return(week);end ;原文链接如下
    http://topic.csdn.net/u/20081211/18/ed683543-1bd4-49dd-9f76-0ddc0061400f.html
      

  5.   


    关键是IW:
    SELECT TO_CHAR(to_date('2009-01-06','yyyy-mm-dd'),'FMIW') FROM DUAL;