[DICA] Mostra todos os dias entre duas datas.

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
meguelito
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 60
Registrado em: Ter, 17 Jan 2006 1:45 pm
Localização: Santa Catarina
Att.:
Alan Juliano Metzger
Programador Oracle
Inside System Informática
Msn/E-mail: alanjuliano@yahoo.com.br

Boa tarde Galera,

Depois de uma pesquisada na WEB, achei este SQL que já tive que usar pela segunda vez, achei ele aqui mesmo no fórum, porém o assunto não está bem explicito.

Segue abaixo:

Selecionar tudo

SELECT dt_trimestre
  FROM (SELECT trunc(SYSDATE) - LEVEL dt_trimestre
          FROM dual
        CONNECT BY LEVEL <= 1000) d
 WHERE d.dt_trimestre >= '01/01/2010'
   AND d.dt_trimestre <= '30/03/2010'
ORDER BY dt_trimestre ASC
Avatar do usuário
fsitja
Rank: OraSauro
Rank: OraSauro
Mensagens: 611
Registrado em: Seg, 19 Jan 2009 4:29 pm
Localização: Gaúcho no Rio de Janeiro - RJ
"The scars exist to remind us that the past was real"
Campanha: Como fazer uma pergunta e obter uma resposta.
http://tkyte.blogspot.com/2005/06/how-t ... tions.html

OCA & OCP Developer — OCE SQL Expert — OCS Data Warehousing Specialist

Assim fica um pouco mais eficiente, pois não é preciso fixar uma quantidade de dias em 1000 (ou mais) e depois filtrar tudo, perdendo tempo de CPU:

Selecionar tudo

SELECT to_date('01/01/2010', 'DD/MM/YYYY') + LEVEL - 1 dt_trimestre
	FROM (SELECT to_date('30/03/2010', 'DD/MM/YYYY') dt_fim,
               to_date('01/01/2010', 'DD/MM/YYYY') dt_ini
          FROM dual) d
CONNECT BY LEVEL <= dt_fim - dt_ini + 1;
Responder
  • Informação
  • Quem está online

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