Semanas entre duas datas

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
izaiascatelli
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 16
Registrado em: Ter, 17 Mai 2005 4:24 pm
Localização: curitiba pr

Para se obter quantidade de semanas entre duas datas:
trunc((data_maior - data_menor)/7), despreza decimais ou
ceil((data_maior - data_menor)/7) arredonda pra cima
Problema: o sistema calcula uma quantidade de dias divido por 7
e não quantidade de semanas reais atingidas pelo periodo;
Criei uma rotina para encontrar a quantidade semanas reais no
periodo compreendido entre duas datas, utilizado puro SQL.
Detalhe: com essa rotina, se o periodo começar numa semana e terminar
na semana seguinte, o sistema contará 2 semanas, independentemente
se o periodo for menor que 7 dias. Ou seja, não há coisas do tipo
duas semanas e meia;
Façam sua avaliação.
Gerado no Oracle 10:

Selecionar tudo

SELECT Count(Count(LEVEL - (To_Number(To_Char(data_menor + LEVEL,'d'))-1)))
FROM dual
WHERE data_maior >= data_menor
CONNECT BY LEVEL <= data_maior - data_menor
GROUP BY LEVEL - (To_Number(To_Char(data_menor + LEVEL,'d'))-1);
izaiascatelli
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 16
Registrado em: Ter, 17 Mai 2005 4:24 pm
Localização: curitiba pr

Ops... corrigindo, rss

Selecionar tudo

SELECT Count(Count(LEVEL - (To_Number(To_Char(data_menor + (LEVEL-1),'d')))))
INTO semanas
FROM dual
WHERE data_maior >= data_menor
CONNECT BY LEVEL <= (data_maior - data_menor) + 1
GROUP BY LEVEL - (To_Number(To_Char(data_menor + (LEVEL-1),'d')));
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 7 visitantes