Data no Oracle? [RESOLVIDO]

Pessoal,

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?

Qualquer dica e bem vinda…vlw!

Direto no banco? Eu já vi resolverem essa criando uma tabela de dias úteis (todos os dias menos sábados, domingos e feriados). Aí a query sai fácil.

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!

Vlw pela dica isso esta funcionando.

Falta a parte de feriados.

Quando falei direto no banco e a query que já traz os registros q satisfaz esta condição, o tratamento não será feito na aplicação.

Falta agora verificar se estes dias esta levando em consideração os dias que são feriado que se encontram em outra tabela.

Se alguem souber de mais algo, desde já agradeço.

O jeito mais facil é você criar uma função em pl/sql que faz isso.

E isso que estou começando a fazer…

Alguem tem algum modelo já pronto tem algumas partes que ainda terei q ver como será feito…

Se alguem tiver algum modelo que já faz isso e puder disponibilizar fico grato…

vlw!

Acho deverá ser uma function.

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.

Desde já agradeço.

vlw!

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;

VLW! :smiley: