Найдите разницу между отметками времени в секундах в PostgreSQL

127

У меня есть таблица PostgreSQL 8.3с 2 timestampстолбцами. Я хотел бы получить разницу между ними timestampsза секунды. Не могли бы вы помочь мне, как это сделать?

TableA
(
  timestamp_A timestamp,
  timestamp_B timestamp
)

Мне нужно получить что-то вроде (timestamo_B - timestamp_A)секунд (не только разницу между секундами, она должна включать часы, минуты и т . Д.) .

Arun
источник

Ответы:

240

Пытаться: 

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

Подробности здесь: ЭКСТРАКТ .

Игорь Романченко
источник
3
Большое спасибо за ответ. Это сработало !!! В приведенном выше запросе отсутствует закрывающая скобка. Но я понял это. Большое спасибо за быстрый ответ.
Arun
30
select age(timestamp_A, timestamp_B)

Отвечая на комментарий Игоря:

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
Клодоальдо Нето
источник
Это не сработает. Будет Subtract arguments, producing a "symbolic" result that uses years and months. Это не даст разницы в секундах.
Игорь Романченко
@Igor Обновлено с результатами, включая секунды. ОП хочет не только секунды, но и минуты, часы и т. Д.
Клодоальдо Нето
5
Если я правильно его понял, он хочет to get the difference between these timestamps in seconds. А it should include hours, minutes etcзначит должна быть полная разница вроде 10:25:30 - 10:15:25 = 605 seconds. Думаю - использовал EXTRACT(SECONDS FROM ...)и получил10:25:30 - 10:15:25 = 5 seconds
Игорь Романченко
1
@ Игорь Это не очень понятно, но теперь, когда вы это говорите, я думаю, что вы, вероятно, правы.
Clodoaldo Neto
@Clodoaldo: Мне нужен результат, упомянутый Игорем. Мне нужна полная разница в секундах.
Arun
0
SELECT (cast(timestamp_1 as bigint) - cast(timestamp_2 as bigint)) FROM table;

Если у кого-то возникла проблема с использованием extract .

tausif
источник
Он также не работает с меткой времени с часовыми поясами.
Родольфо,