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行。
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;
/