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
rteramae
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 6
Registrado em: Sáb, 23 Fev 2008 12:24 pm
Localização: São Paulo - SP
RENATO TERAMAE
TMAE CONSULTORIA E INFORMATICA

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?
rogenaro
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 232
Registrado em: Sex, 30 Mar 2007 7:26 pm
Localização: Londrina - PR
Rafael O. Genaro

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:

Selecionar tudo

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:

Selecionar tudo

select trunc(add_months(sysdate, 1), 'MM')
     + mod((8 - to_number(to_char(trunc(add_months(sysdate, 1), 'MM'), 'D'))),7)
from dual
rteramae
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 6
Registrado em: Sáb, 23 Fev 2008 12:24 pm
Localização: São Paulo - SP
RENATO TERAMAE
TMAE CONSULTORIA E INFORMATICA

Obrigado,

Era isso mesmo que procurava.
Responder
  • Informação
  • Quem está online

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