Função para Retornar o primeiro Domingo do Mês seguinte

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
  

Mensagemem Seg, 14 Abr 2008 4:31 pm

Pessoal,

Preciso de um help para criar uma função, para retornar qual o dia do primeiro domingo do mês seguinte.

Posso passar como parametro na função o último dia do mês para facilitar o desenvolvimento.

Minha idéia é subtrair o valor 8 do dia da semana correspondente do último dia do mês atual.

Por exemplo dia 30/04/2008 é 4, portanto
vou somar 4 ao dia 30/04/2008, o que me retornaria dia 04/05/2008.

alguém tem outra solução para este problema?
rteramae
Localização: São Paulo - SP

RENATO TERAMAE
TMAE CONSULTORIA E INFORMATICA

Mensagemem Seg, 14 Abr 2008 6:39 pm

Já que está no fórum SQL (:P), uma solução seria usar as funções ADD_MONTHS e TO_CHAR com uma lookup table para obter o primeiro domingo, algo do tipo:
Código: Selecionar todos
select pdia
from   (
         select trunc(add_months(sysdate, 1), 'MM') + b.inc pdia
         from   dual a
              , (
                  select level-1 inc
                  from   dual
                  connect by level <= 7
                ) b
       )
where  to_char(pdia, 'D') = '1'


ou também seguindo o seu raciocínio:
Código: Selecionar todos
select trunc(add_months(sysdate, 1), 'MM')
     + mod((8 - to_number(to_char(trunc(add_months(sysdate, 1), 'MM'), 'D'))),7)
from dual
rogenaro
Localização: Londrina - PR

Rafael O. Genaro

Mensagemem Ter, 15 Abr 2008 8:37 am

Obrigado,

Era isso mesmo que procurava.
rteramae
Localização: São Paulo - SP

RENATO TERAMAE
TMAE CONSULTORIA E INFORMATICA


  • Veja também
    Respostas
    ExibiÇões
    Última mensagem


Voltar para SQL

Quem está online

Usuários navegando neste fórum: Majestic-12 [Bot] e 3 visitantes