CREATE OR REPLACE FUNCTION QTTY_DAY_WEEK(p_dt_start DATE, p_dt_end DATE, p_day_week NUMBER) RETURN NUMBER IS
v_day NUMBER;
v_count NUMBER := 0;
v_start NUMBER;
v_end NUMBER;
BEGIN
v_start := TRUNC(SYSDATE) - p_dt_start;
v_end := TRUNC(SYSDATE) - p_dt_end;
FOR v_aux IN v_end .. v_start LOOP
SELECT to_char(SYSDATE - v_aux ,'d')
INTO v_day
FROM dual;
IF v_day IN (p_day_week) THEN -- 1 is Sunday, 2 is Monday, ...
v_count:= v_count + 1;
END IF;
ENd LOOP;
RETURN(v_count);
END;
onde:
p_dt_start é a data inicial
p_dt_end é a data final
p_day_week é o dia da semana (1 para Domingo, 2 para Segunda, 3 para Terça, ..., 7 para Sábado)
para testar:
select QTTY_DAY_WEEK(TO_DATE('01/03/2013','DD/MM/RRRR'), TO_DATE('20/03/2013','DD/MM/RRRR'), 1) QTD_DOMINGOS
from dual;
Resultado:
3
Até a próxima postagem...
Nenhum comentário:
Postar um comentário