ORACLE 获取当月时间查询安周分组 5
我现在有字段dia值是从1-31号所以获取当前月份安周对dia分组回答的好还有悬赏...
我现在有字段 dia 值是 从1 - 31号 所以获取当前月份 安周对 dia 分组 回答的好 还有悬赏
展开
1个回答
展开全部
闲着无聊给你写了个函数
create function FN_TEST_DATE(i_time date)
return int as
v_int varchar2(10);
v_int1 varchar2(10);
v_int2 varchar2(10);
begin
v_int1:=7-to_char(TRUNC(i_time,'mm') ,'D')+1;
v_int2:=to_number(substr(to_char(i_time,'yyyymmdd'),7,2));
if v_int2<=to_number(v_int1) then
v_int:=1;
elsif v_int2<=v_int1+7 then
v_int:=2;
elsif v_int2<=v_int1+14 then
v_int:=3;
elsif v_int2<=v_int1+21 then
v_int:=4;
elsif v_int2<=v_int1+28 then
v_int:=5;
else
v_int:=6;
end if;
return(v_int);
end;
--参数规范性就没管了,统计一个月直接调用然后分组,统计多个月的,再按月份分组就行
select FN_TEST_DATE(sysdate) from dual --查看当前时间是本月第几周
create function FN_TEST_DATE(i_time date)
return int as
v_int varchar2(10);
v_int1 varchar2(10);
v_int2 varchar2(10);
begin
v_int1:=7-to_char(TRUNC(i_time,'mm') ,'D')+1;
v_int2:=to_number(substr(to_char(i_time,'yyyymmdd'),7,2));
if v_int2<=to_number(v_int1) then
v_int:=1;
elsif v_int2<=v_int1+7 then
v_int:=2;
elsif v_int2<=v_int1+14 then
v_int:=3;
elsif v_int2<=v_int1+21 then
v_int:=4;
elsif v_int2<=v_int1+28 then
v_int:=5;
else
v_int:=6;
end if;
return(v_int);
end;
--参数规范性就没管了,统计一个月直接调用然后分组,统计多个月的,再按月份分组就行
select FN_TEST_DATE(sysdate) from dual --查看当前时间是本月第几周
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询