Olá pessoal,preciso de uma function ou procedure que calcula o número de dias úteis em um determinado período.
Cordialmente,
Diego.
Número de dias úteis dentro de um determinado período
-
- Moderador
- Mensagens: 2016
- Registrado em: Qua, 12 Jan 2005 3:25 pm
- Localização: Araraquara - SP
Abraço,
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Brother, abaixo segue um exemplo.
Nota Importante: Não computei nesta function os feriados. Para tal, você teria que ter o cadastro dos mesmos e adicionar nesta function.
Espero ter ajudado.
Nota Importante: Não computei nesta function os feriados. Para tal, você teria que ter o cadastro dos mesmos e adicionar nesta function.
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;
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 4 visitantes