Znajdź różnicę między znacznikami czasu w sekundach w PostgreSQL

127

Mam stół PostgreSQL 8.3z 2 timestampkolumnami. Chciałbym uzyskać różnicę między nimi timestampsw ciągu kilku sekund. Czy mógłbyś mi pomóc, jak to zrobić?

TableA
(
  timestamp_A timestamp,
  timestamp_B timestamp
)

Muszę uzyskać coś takiego (timestamo_B - timestamp_A)w sekundach (nie tylko różnica między sekundami, powinna zawierać godziny, minuty itp . ) .

Bieg
źródło

Odpowiedzi:

239

Próbować: 

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

Szczegóły tutaj: EKSTRAKT .

Igor Romanchenko
źródło
3
Bardzo dziękuję za odpowiedź. Zadziałało !!! W powyższym zapytaniu brakuje zamykającego nawiasu. Ale już to rozgryzłem. Bardzo dziękuję za szybką odpowiedź.
Arun
30
select age(timestamp_A, timestamp_B)

Odpowiadając na komentarz Igora:

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
źródło
To nie zadziała. Będzie Subtract arguments, producing a "symbolic" result that uses years and months. To nie da różnicy w sekundach.
Igor Romanchenko
@Igor Zaktualizowano o wyniki zawierające sekundy. OP chce nie tylko sekund, ale także minut, godzin itp.
Clodoaldo Neto
5
Jeśli dobrze go zrozumiałem, chce to get the difference between these timestamps in seconds. I it should include hours, minutes etcoznacza, że ​​musi to być pełna różnica 10:25:30 - 10:15:25 = 605 seconds. Domyślam się - użył EXTRACT(SECONDS FROM ...)i dostał10:25:30 - 10:15:25 = 5 seconds
Igor Romanchenko
1
@Igor Nie jest to zbyt jasne, ale teraz, kiedy to powiedziałeś, myślę, że prawdopodobnie masz rację.
Clodoaldo Neto
@Clodoaldo: Potrzebuję wyjścia, o którym wspomniał Igor. Potrzebuję pełnej różnicy w sekundach.
Arun
0
SELECT (cast(timestamp_1 as bigint) - cast(timestamp_2 as bigint)) FROM table;

W przypadku, gdy ktoś ma problem z użyciem extract .

tausif
źródło
Nie działa również z sygnaturą czasową ze strefami czasowymi.
Rodolfo