create or replace function GetWeekNum(I_VALUE IN date,--s
I_SP VARCHAR2 default null)
return VARCHAR2 as
/**
年開始第一天算第一週
一周從星期天開始 星期六結束
周計算
**/
V_BEGNUM NUMBER;
V_YD NUMBER;
V_BEGDT DATE;
V_BEGDTNUM NUMBER;
V_WN NUMBER;
begin
IF I_VALUE IS NULL THEN
RETURN NULL;
END IF;
V_BEGNUM := to_char(I_VALUE, 'd', 'NLS_DATE_LANGUAGE=AMERICAN') - 1;
V_YD := to_char(I_VALUE, 'ddd');
V_BEGDT := I_VALUE - V_YD + 1;
V_BEGDTNUM := to_char(V_BEGDT, 'd', 'NLS_DATE_LANGUAGE=AMERICAN') - 1;
V_WN := ceil(V_YD / 7);
if V_BEGNUM < V_BEGDTNUM then
V_WN := V_WN + 1;
end if;
return to_char(I_VALUE,'YYYY') || I_SP || to_char(V_WN, 'FM00');
end;
最后
以上就是真实路灯最近收集整理的关于oracle 取周数,按周日到下周六为一周,以年为周期算,一年开始为第一周的全部内容,更多相关oracle内容请搜索靠谱客的其他文章。
发表评论 取消回复