Trova la differenza tra i timestamp in secondi in PostgreSQL


127

Ho una tabella PostgreSQL 8.3con 2 timestampcolonne. Vorrei ottenere la differenza tra questi timestampsin pochi secondi. Potresti aiutarmi per favore a fare questo?

TableA
(
  timestamp_A timestamp,
  timestamp_B timestamp
)

Devo ottenere qualcosa di simile (timestamo_B - timestamp_A)in secondi (non solo la differenza tra i secondi, dovrebbe includere ore, minuti ecc . ) .

Risposte:


239

Provare: 

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

Dettagli qui: ESTRATTO .


3
Grazie mille per la risposta. Ha funzionato !!! Nella query precedente, manca una parentesi di chiusura. Ma l'ho capito. Grazie mille per la tua rapida risposta.
Arun

30
select age(timestamp_A, timestamp_B)

Rispondendo al commento di 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

Non funzionerà. Lo farà Subtract arguments, producing a "symbolic" result that uses years and months. Non darà la differenza in pochi secondi.
Igor Romanchenko

@Igor Aggiornato con i risultati inclusi i secondi. L'OP vuole non solo secondi ma anche minuti, ore, ecc.
Clodoaldo Neto

5
Se l'ho capito correttamente, lo vuole to get the difference between these timestamps in seconds. E it should include hours, minutes etcsignifica che deve essere la differenza completa come 10:25:30 - 10:15:25 = 605 seconds. La mia ipotesi - ha usato EXTRACT(SECONDS FROM ...)e ottenuto10:25:30 - 10:15:25 = 5 seconds
Igor Romanchenko

1
@Igor Non è molto chiaro ma ora che lo dici penso che probabilmente hai ragione.
Clodoaldo Neto

@Clodoaldo: ho bisogno dell'output come menzionato da Igor. Ho bisogno della differenza completa in pochi secondi.
Arun

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

Nel caso in cui qualcuno abbia un problema con l'utilizzo di extract .


Non funziona neanche con il timestamp con i fusi orari.
Rodolfo
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.