我所知道的oracle两种周计算方式:
select  to_char(to_date('2005-01-01','yyyy-mm-dd'),'yyyy-iw')   from dual  //以实期星期几计算,但一年的第一周是从该年第一个星期一开始select  to_char(to_date('2005-01-01','yyyy-mm-dd'),'yyyy-ww')   from dual; //从一年的第一天开始以7求模得到周数,如(2005-01-01至2005-01-07为第一周,2005-01-08至2005-01-15为第二周的计算模式)
现在的周计算业务方式是:
从该年1月1号(不考虑属星期几)开始至该年该一个星期日为第一周,第二周是从该年第一个星期开始算,我现在要以周为单位分别统计,请问有什么快捷的解决办法?在线等待,希望大能告诉我oracle更多的周计算方式...谢谢

解决方案 »

  1.   

    to_char(date,'iw')按照标准周的划分
      

  2.   

    select  to_char(to_date('2008-12-31','yyyy-mm-dd'),'yyyy-iw')   from dual  
    得到的结果是
    2008-01select  to_char(to_date('2006-01-01','yyyy-mm-dd'),'yyyy-iw')   from dual 
    2006-52这标准算法不是我想要的
      

  3.   


    --try it
    select to_char(sysdate,'FMWW') from dual;
      

  4.   

    执行select to_char(sysdate,'FMWW') from dual;
    得到的50,
    有没有一个参数使其得到的结果是2008-50?
      

  5.   


    --try it
    select to_char(sysdate,'YYYY-FMWW') from dual;
      

  6.   

    select to_char(sysdate,'YYYY-FMWW') from dual;这种计算方式也我想要的,我想要的算法:该年1月1号(不考虑属星期几)开始至该年该一个星期日为第一周,
    第二周是从该年第一个星期开始算(这与iw算法相同)
    一年的最后一周以该年的12月31号做为截止
      

  7.   

    找来找去不如写一个~~
    看看这个是不是你需要的!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 ;
      

  8.   

    to_char(date,'iw')按照标准周的划分