Finden Sie den Unterschied zwischen Zeitstempeln in Sekunden in PostgreSQL

127

Ich habe eine Tabelle PostgreSQL 8.3mit 2 timestampSpalten. Ich möchte den Unterschied zwischen diesen timestampsin Sekunden bekommen. Könnten Sie mir bitte helfen, wie das geht?

TableA
(
  timestamp_A timestamp,
  timestamp_B timestamp
)

Ich brauche so etwas wie (timestamo_B - timestamp_A)in Sekunden (nicht nur den Unterschied zwischen Sekunden, er sollte Stunden, Minuten usw. enthalten) .

Arun
quelle

Antworten:

238

Versuchen: 

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

Details hier: EXTRAKT .

Igor Romanchenko
quelle
3
Vielen Dank für die Antwort. Es funktionierte !!! In der obigen Abfrage fehlt eine schließende Klammer. Aber ich habe es herausgefunden. Vielen Dank für Ihre schnelle Antwort.
Arun
30
select age(timestamp_A, timestamp_B)

Antwort auf Igor's Kommentar:

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
Clodoaldo Neto
quelle
Es wird den Job nicht machen. Es wird Subtract arguments, producing a "symbolic" result that uses years and months. Es wird nicht den Unterschied in Sekunden geben.
Igor Romanchenko
@Igor Aktualisiert mit den Ergebnissen einschließlich Sekunden. Das OP will nicht nur Sekunden, sondern auch Minuten, Stunden usw.
Clodoaldo Neto
5
Wenn ich ihn richtig verstanden habe, will er to get the difference between these timestamps in seconds. Und it should include hours, minutes etcbedeutet, es muss der volle Unterschied sein 10:25:30 - 10:15:25 = 605 seconds. Meine Vermutung - er benutzte EXTRACT(SECONDS FROM ...)und bekam10:25:30 - 10:15:25 = 5 seconds
Igor Romanchenko
1
@Igor Es ist nicht sehr klar, aber jetzt, wo du es sagst, denke ich, dass du wahrscheinlich Recht hast.
Clodoaldo Neto
@ Clodoaldo: Ich brauche die Ausgabe wie von Igor erwähnt. Ich brauche den vollen Unterschied in Sekunden.
Arun
0
SELECT (cast(timestamp_1 as bigint) - cast(timestamp_2 as bigint)) FROM table;

Falls jemand ein Problem mit dem Extrakt hat .

tausif
quelle
Es funktioniert auch nicht mit Zeitstempeln mit Zeitzonen.
Rodolfo