我所知道的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更多的周计算方式...谢谢
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更多的周计算方式...谢谢
得到的结果是
2008-01select to_char(to_date('2006-01-01','yyyy-mm-dd'),'yyyy-iw') from dual
2006-52这标准算法不是我想要的
--try it
select to_char(sysdate,'FMWW') from dual;
得到的50,
有没有一个参数使其得到的结果是2008-50?
--try it
select to_char(sysdate,'YYYY-FMWW') from dual;
第二周是从该年第一个星期开始算(这与iw算法相同)
一年的最后一周以该年的12月31号做为截止
看看这个是不是你需要的!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 ;