首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

oracle 关于月中的周 的sql 话语! 急求

2013-04-12 
oracle 关于月中的周 的sql 语句!急求!select to_char(to_date(OXYGENTIME,yyyy-MM-dd HH24:mi:ss),w)

oracle 关于月中的周 的sql 语句! 急求!
select to_char(to_date(OXYGENTIME,'yyyy-MM-dd HH24:mi:ss'),'w') 周,trunc(avg(eos),2) eos  from v_OXYGENMAN where userid=2 and OXYGENTIME like '2013-02%' group by to_char(to_date(OXYGENTIME,'yyyy-MM-dd HH24:mi:ss'),'W')


查询出表中二月的全部天的数据 ,并按周来分组 。但我这种分组,是1号为第一周的第一天。  
28天的话,就是除以7整整四个周。 

而要求是自然周,就是比如2013年2月,1号、2号为第一周,
3号到9号第二周,10号到16号为第三周,17号到23号为第四周,24号到28号为第四周。

急求大神指教,在线等啊!!!!    oracle sql 周??月
[解决办法]


  1  select trunc(sysdate,'mm')+rownum-1 aa,
  2  ceil(to_char((trunc(sysdate,'mm')+rownum-1),'dd')/7) bb
  3* from dual connect by rownum<=add_months(sysdate,1)-sysdate
SQL> /

AA                     BB
-------------- ----------
01-4月 -13              1
02-4月 -13              1
03-4月 -13              1
04-4月 -13              1
05-4月 -13              1
06-4月 -13              1
07-4月 -13              1
08-4月 -13              2
09-4月 -13              2
10-4月 -13              2
11-4月 -13              2

AA                     BB
-------------- ----------
12-4月 -13              2
13-4月 -13              2
14-4月 -13              2
15-4月 -13              3
16-4月 -13              3
17-4月 -13              3
18-4月 -13              3
19-4月 -13              3
20-4月 -13              3
21-4月 -13              3
22-4月 -13              4

AA                     BB
-------------- ----------
23-4月 -13              4


24-4月 -13              4
25-4月 -13              4
26-4月 -13              4
27-4月 -13              4
28-4月 -13              4
29-4月 -13              5
30-4月 -13              5

已选择30行。


[解决办法]
17号到23号为第四周,24号到28号为第五周把,
PS:CSDN的论坛编辑器好难用啊,敲个字卡一下...
[解决办法]
哦,我看错题目了。
[解决办法]
create or replace function week_no(t_date in date)
return number
is
v_xq int;
v_time date;
v_day int;
v_rq int;
v_cnt int :=0;
v_week int;
begin
--日期对应的星期和号
select to_number(to_char(t_date,'d')) xq,to_number(to_char(t_date,'dd')) rq into v_xq,v_rq from dual;
--判断从1号到当前日期有几个星期天
for i in 1 .. v_rq 
loop
    v_time:=to_date(to_char(t_date,'yyyymm')
[解决办法]
i,'yyyymmdd');
   select to_number(to_char(v_time,'d')) into v_day from dual;
   
      if v_day =1  then 
         v_cnt :=v_cnt+1;
       end if;
end loop;
--如果输入的日期本身是星期天,则所在的周数,就是V_CNT,否则为V_CNT+1
if v_xq =1 then
     v_week :=v_cnt;
else
     v_week :=v_cnt+1;
end if;
return (v_week);
end week_no;
/

用个函数去判断当天是属于当月的第几周,我只想到这个,函数如下,请参考,谢谢

热点排行