Pular para o conteúdo
Visualizando 7 posts - 1 até 7 (de 7 do total)
  • Autor
    Posts
  • #98716
    Lourival
    Participante

      Olá, pessoal!

      Fazia tempo não me deparava com uma query trabalhosa.

      Vamos lá:

      Preciso fazer uma query que me retorne a diferença entre datas( qtde de dias),até aí normal, mas tinha que ficar mais difícil.

      data entre :

      15/03/2010 15:02:05 e 12/03/2010

      Observem que na segunda data não há horário,
      o resultado teria que ser a quantidade exata de dias entre uma data e outra.

      Detalhe, com o sysdate não consegui.

      Alguma idéia?

      Abraço a todos! 😀

      #98717
      burga
      Participante

        Não entendi seu problema… Pra mim é só tirar a diferença entre as duas datas, já retorna o número EXATO de dias entre as duas datas…

        #98718
        Rodrigo Mesquita
        Participante

          Lourival

          E só diminuir uma data da outra. Caso voce queira tirar a hora para não influir na sua consulta use o trunc.

          select trunc(data_com_hora)- data from dual

          #98719
          Lourival
          Participante

            Obrigado pessoal,

            Com essas idéias cheguei a uma outra possibilidade.

            Vejam:

            select trunc(to_date(’12/03/10′,’DD/MM/YY’) – to_date(’15/03/10 15:02:05′,’DD/MM/YY HH24:MI:SS’),0) DIAS from dual

            Resultado:

            -3

            Está mais aproximado do que eu precisava.

            Agradeço aos amigos!

            #98720
            Rodrigo Mesquita
            Participante

              só um detalhe. quando voce usa do to date não preciso do trunc

              to_date(’12/03/10′,’DD/MM/YYYY’)

              #98722
              Lourival
              Participante

                Pois então,

                Do jeito que mostrei o resultado é exato, : -3 dias

                tentei sem o trunc mas o resultado não sai exato.:
                27,3735532407407 dias

                a query foi meu amigo Ronaldo que fez.

                Abs

                #98724
                marlontk
                Participante

                  Se a hora é relevante ao teu problema de diferença entre as datas usa este sql
                  select to_date(’15/03/2010 15:02:05′,’dd/mm/yyyy hh24:mi:ss’) – to_date(’12/03/2010′,’dd/mm/yyyy hh24:mi:ss’) from dual;

                  TO_DATE(’15/03/201015:02:05′,’

                            3,62644675925926
                  

                  caso contrário usa as duas datas com trunc para ignorar a hora

                  elect trunc(to_date(’15/03/2010 15:02:05′,’dd/mm/yyyy hh24:mi:ss’)) – trunc(to_date(’12/03/2010′,’dd/mm/yyyy hh24:mi:ss’)) from dual;

                  TRUNC(TO_DATE(’15/03/201015:02

                                           3
                  

                  Eu mantive o to_date() nas datas porque ai garantimos que sempre vai funcionar mesmo não tendo a hora na segunda data o Oracle sabe que a hora neste case é 00:00:00.

                Visualizando 7 posts - 1 até 7 (de 7 do total)
                • Você deve fazer login para responder a este tópico.