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 . ) .

Odpowiedzi:


239

Próbować: 

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

Szczegóły tutaj: EKSTRAKT .


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

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 .


Nie działa również z sygnaturą czasową ze strefami czasowymi.
Rodolfo
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.