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号为第四周。急求大神指教,在线等啊!!!! oraclesql周 月
查询出表中二月的全部天的数据 ,并按周来分组 。但我这种分组,是1号为第一周的第一天。
28天的话,就是除以7整整四个周。 而要求是自然周,就是比如2013年2月,1号、2号为第一周,
3号到9号第二周,10号到16号为第三周,17号到23号为第四周,24号到28号为第四周。急求大神指教,在线等啊!!!! oraclesql周 月
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 2AA 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 4AA 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行。
select to_date('2013-02-01', 'yyyy-MM-dd') + level - 1,
CEIL((to_char(to_date('2013-02-01', 'yyyy-MM-dd'), 'd') + LEVEL - 1) / 7) 周
from dual
connect by level <= 28
--
TO_DATE('2013- 周
-------------- ----------
01-2月 -13 1
02-2月 -13 1
03-2月 -13 2
04-2月 -13 2
05-2月 -13 2
06-2月 -13 2
07-2月 -13 2
08-2月 -13 2
09-2月 -13 2
10-2月 -13 3
11-2月 -13 3
12-2月 -13 3
13-2月 -13 3
14-2月 -13 3
15-2月 -13 3
16-2月 -13 3
17-2月 -13 4
18-2月 -13 4
19-2月 -13 4
20-2月 -13 4
21-2月 -13 4
22-2月 -13 4
23-2月 -13 4
24-2月 -13 5
25-2月 -13 5
26-2月 -13 5
27-2月 -13 5
28-2月 -13 5已选择28行。
PS:CSDN的论坛编辑器好难用啊,敲个字卡一下...
----------------
2
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;
/
用个函数去判断当天是属于当月的第几周,我只想到这个,函数如下,请参考,谢谢