Hello guys, I need a function or procedure that calculates the number of business days in a given period.
Cordially, Diego.
DECLARE
V_DATA_INI DATE := TO_DATE('01/05/2007','dd/mm/rrrr');
V_DATA_FIM DATE := TO_DATE('02/05/2007','dd/mm/rrrr');
V_QT_DIAS_UTEIS NUMBER(10) := 0;
FUNCTION FUN_DIAS_UTEIS (P_DATA_INICIAL IN DATE,
P_DATA_FINAL IN DATE)
RETURN NUMBER
IS
v_dia_semana NUMBER(10) := 0;
v_dias_uteis NUMBER(10) := 0;
BEGIN
IF to_number(TO_char( P_DATA_INICIAL , 'D' )) NOT IN (1,7)
THEN
v_dias_uteis := 1; -- Conto a própria data inicial, se não for sábado ou domingo
END IF;
FOR x in 1..( P_DATA_FINAL - P_DATA_INICIAL )
LOOP
v_dia_Semana := to_number(TO_char( P_DATA_INICIAL + x, 'D' )) ;
IF v_dia_semana NOT IN (1,7) -- 1,7 não somo sábado e domingo.
THEN
v_dias_uteis := v_dias_uteis + 1;
END IF;
END LOOP;
RETURN v_dias_uteis ;
EXCEPTION
WHEN OTHERS THEN
raise_application_error(-20001,'Erro ao selecionar dias úteis: ' || SQLERRM );
END FUN_DIAS_UTEIS;
BEGIN
V_QT_DIAS_UTEIS := FUN_DIAS_UTEIS (V_DATA_INI, V_DATA_FIM);
dbms_output.put_line('Qtd. Dias Úteis: ' || V_QT_DIAS_UTEIS);
END;
Users browsing this forum: No registered users and 3 guests