Estou com uma data cadastrada no banco e quero saber se o registro esta há mais de 30 dias vencido, sendo que possuo outra tabela que tem os feriados do ano.
Alguém tem alguma dica de como posso fazer isso no banco?
O que vc pode fazer é simples
vc pega a data a atual que se não me engano no Oracle é SYSDATE
e subtrai por sua data que no banco, isso como uma clausula no WHERE
ai vc verifica se esta a mais de 30 dias vencida
se eu não me engano é assim, mas testa ai
SELECT * FROM TABELA
WHERE TO_DATE(SYSDATE,'DD/MM/YYYY') - TO_DATE(CAMPO_DATA_DA_TABELA,'DD/MM/YYYY') > 30
Com esse select vc so vai seleciona os registro que estão vencidos a mais de 30 dias!
O ideal será ter uma function que recebe uma data e a quantidade de dias e dai retorna a data de vencimento baseando-se nesta data + a quantidade de dias recebido.
Tipo recebe SYSDATE e 30 dias como quantidade, ou seja dai a mesma calcula a partir de hoje qual a data que será 30 dias úteis (sem sabado, domingos e feriados que estará em uma tabela).
Então esta data retornada será a data de vencimento.
Apesar de explicar a necessidade tem varias questões q ainda não tenho certeza de como fazer, até mesmo devido não ter tanto temo de vivencia com o oracle, por isso estou pedido a ajuda do grupo.
Se alguém tive algo do tipo já pronto, a caminho ou até ideias de recursos do oracle que possa ajudar.
SOLUÇÃO QUE ENCONTREI…Atendeu a minha necessidade mas vai pra a galera do forum…
Possa ser q sirva pra alguem…
select * from (
select dt, to_char(dt,'DY', 'nls_language=''BRAZILIAN PORTUGUESE'''), rownum rn
from (
select trunc(sysdate)+level dt
from dual
connect by level <= 356) x
where to_char(dt,'DY', 'nls_language=''BRAZILIAN PORTUGUESE''') NOT IN ('SÁB','DOM')
and DT NOT IN (SELECT FERI_DATA FROM DA_FERIADO)
order by dt asc)
where rn = 30;