Eu tenho a seguinte tabela:
Filename - varchar
Creation Date - Date format dd/mm/yyyy hh24:mi:ss
Oldest cdr date - Date format dd/mm/yyyy hh24:mi:ss
Como posso calcular a diferença em horas, minutos e segundos (e possivelmente dias) entre as duas datas no Oracle SQL?
obrigado
oracle
date-arithmetic
Steve
fonte
fonte
Respostas:
Você pode subtrair datas no Oracle. Isso dará a você a diferença em dias. Multiplique por 24 para obter as horas e assim por diante.
Se sua data for armazenada como dados de caractere, você deve primeiro convertê-la em um tipo de data.
Nota :
Essa resposta se aplica a datas representadas pelo tipo de dados Oracle
DATE
. O Oracle também possui um tipo de dadosTIMESTAMP
, que também pode representar uma data (com hora). Se você subtrairTIMESTAMP
valores, obterá umINTERVAL
; para extrair valores numéricos, use aEXTRACT
função.fonte
INTERVAL
tipo de dados, não um simples float.DATE
, obtém o número de dias (como aNUMBER
). No entanto, se você subtrairTIMESTAMP
valores, obtémINTERVALDS
. Provavelmente você está trabalhando comTIMESTAMP
e não comDATE
valores. Eu editei a resposta.DATE
eTIMESTAMP
têm um componente de tempo (horas, minutos e segundos).TIMESTAMP
também tem um componente de tempo fracionário de segundos (e potencialmente componentes de fuso horário).Para obter o resultado em segundos:
Verifique [ https://community.oracle.com/thread/2145099?tstart=0][1]
fonte
Espero que isto ajude.
fonte
Isso lhe dará três colunas como dias, horas e minutos.
fonte
Você também pode tentar isso:
Ele exibe o tempo em uma forma mais legível, como: 00:01:34. Se você também precisar de dias, pode simplesmente adicionar DD à última string de formatação.
fonte
Você poderia usar a função to_timestamp para converter as datas em carimbos de data / hora e executar uma operação de substrato.
Algo como:
fonte
Calcule a idade de HIREDATE até a data do sistema do seu computador
fonte
fonte
No oracle 11g
fonte
Se você selecionar duas datas de ' sua_tabela ' e também quiser ver o resultado como uma saída de coluna única (por exemplo, ' dias - hh: mm: ss '), você pode usar algo assim. Primeiro, você pode calcular o intervalo entre essas duas datas e depois exportar todos os dados que você precisa desse intervalo:
E isso deve dar a você um resultado como este: 0 dias - 1:14:55
fonte
fonte
Se você quiser algo que pareça um pouco mais simples, tente isto para encontrar eventos em uma tabela que ocorreram no último minuto:
Com esta entrada, você pode mexer com os valores decimais até obter o valor de minuto que deseja. O valor 0,0007 passa a ser 1 minuto no que diz respeito aos dígitos significativos sysdate. Você pode usar múltiplos disso para obter qualquer outro valor que desejar:
O resultado é 1 (minuto)
Então, é uma questão simples de verificar
fonte
fonte
fonte
fonte
Isso contará o tempo entre as datas:
fonte
Aqui está outra opção:
fonte
Consulta única que retornará a diferença de tempo de duas colunas de carimbo de data / hora:
fonte
Se você deseja obter a data, adie o uso da tabela e da coluna.
fonte