› Fóruns › SQL e PL/SQL › Diferenças entre datas específicas. sem o sysdate!
- Este tópico contém 6 respostas, 4 vozes e foi atualizado pela última vez 15 anos, 1 mês atrás por
marlontk.
-
AutorPosts
-
30 de março de 2011 às 9:47 pm #98716
Lourival
ParticipanteOlá, 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! 😀
30 de março de 2011 às 10:27 pm #98717burga
ParticipanteNã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…
30 de março de 2011 às 10:57 pm #98718Rodrigo Mesquita
ParticipanteLourival
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
30 de março de 2011 às 11:34 pm #98719Lourival
ParticipanteObrigado 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!
30 de março de 2011 às 11:38 pm #98720Rodrigo Mesquita
Participantesó um detalhe. quando voce usa do to date não preciso do trunc
to_date(’12/03/10′,’DD/MM/YYYY’)
31 de março de 2011 às 12:05 am #98722Lourival
ParticipantePois então,
Do jeito que mostrei o resultado é exato, : -3 dias
tentei sem o trunc mas o resultado não sai exato.:
27,3735532407407 diasa query foi meu amigo Ronaldo que fez.
Abs
31 de março de 2011 às 3:14 pm #98724marlontk
ParticipanteSe 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,62644675925926caso 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
3Eu 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.
-
AutorPosts
- Você deve fazer login para responder a este tópico.
› Fóruns › SQL e PL/SQL › Diferenças entre datas específicas. sem o sysdate!