Encontre diferença entre carimbos de data e hora em segundos no PostgreSQL


127

Eu tenho uma mesa PostgreSQL 8.3com 2 timestampcolunas. Gostaria de obter a diferença entre estes timestampsem segundos. Poderia me ajudar como fazer isso?

TableA
(
  timestamp_A timestamp,
  timestamp_B timestamp
)

Preciso obter algo como (timestamo_B - timestamp_A)em segundos (não apenas a diferença entre segundos, deve incluir horas, minutos etc.) .

Respostas:


238

Experimentar: 

SELECT EXTRACT(EPOCH FROM (timestamp_B - timestamp_A))
FROM TableA

Detalhes aqui: EXTRATO .


3
Muito obrigado pela resposta. Funcionou !!! Na consulta acima, falta um parêntese de fechamento. Mas eu descobri. Muito obrigado pela sua resposta rápida.
Arun

30
select age(timestamp_A, timestamp_B)

Respondendo ao comentário de Igor:

select age('2013-02-28 11:01:28'::timestamp, '2011-12-31 11:00'::timestamp);
              age              
-------------------------------
 1 year 1 mon 28 days 00:01:28

Não fará o trabalho. Será Subtract arguments, producing a "symbolic" result that uses years and months. Não vai dar a diferença em segundos.
Igor Romanchenko

@Igor Atualizado com os resultados, incluindo segundos. O OP quer não apenas alguns segundos, mas também minutos, horas, etc.
Clodoaldo Neto

5
Se eu o entendi corretamente, ele quer to get the difference between these timestamps in seconds. E it should include hours, minutes etcsignifica que deve ser a diferença completa 10:25:30 - 10:15:25 = 605 seconds. Meu palpite - ele usou EXTRACT(SECONDS FROM ...)e conseguiu10:25:30 - 10:15:25 = 5 seconds
Igor Romanchenko

1
@ Igor Não está muito claro, mas agora que você diz isso, acho que provavelmente está certo.
Clodoaldo Neto

@Clodoaldo: Eu preciso da saída, como mencionado por Igor. Eu preciso da diferença total em segundos.
Arun

0
SELECT (cast(timestamp_1 as bigint) - cast(timestamp_2 as bigint)) FROM table;

Caso alguém esteja tendo um problema usando o extrato .


Também não funciona com registro de data e hora com fusos horários.
Rodolfo
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.