Bom dia,
Pra pegar o primeiro dia útil, faça da seguinte forma (pode criar uma função com o código abaixo, passando a data como parâmetro e, retornando uma data útil):
- Código: Selecionar todos
declare
v_data date;
v_primeiro_dia number;
begin
-- Primeiro dia do mês
select trunc(sysdate,'MM')
into v_data
from dual;
-- Se for sábado ou domingo, pula dias.
if to_char(v_data,'D') = '7'
then
-- Se for sábado, joga pra segunda
v_data := v_data + 2;
elsif to_char(v_data,'D') = '1'
then
-- Se for sábado, joga pra segunda
v_data := v_data + 1;
end if;
dbms_output.put_line('Dia util: '||to_char(v_data,'dd/mm/rrrr'));
-- 7 sab
-- 1 dom
end;
Para o último dia, você pode passar pela mesma função, passando como parâmetro de data, o Last_Day dessa data.
qualquer coisa, manda ai.