Знайдіть різницю між часовими позначками в секундах у PostgreSQL


127

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

TableA
(
  timestamp_A timestamp,
  timestamp_B timestamp
)

Мені потрібно отримати щось на кшталт (timestamo_B - timestamp_A)секунд (не лише різницю між секундами, це повинно включати години, хвилини тощо) .

Відповіді:


238

Спробуйте: 

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

Деталі тут: ЕКСТРАКТ .


3
Дякую за відповідь. Це спрацювало !!! У вищезазначеному запиті ми пропускаємо дужки, що закриваються. Але я це зрозумів. Дякую за швидку відповідь.
Арун

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 Оновлено результати, включаючи секунди. ОП хоче не лише секунд, а й хвилин, годин тощо
Clodoaldo Neto

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
@Igor Це не дуже зрозуміло, але зараз, коли ти це кажеш, я думаю, що ти, мабуть, прав.
Clodoaldo Neto

@Clodoaldo: Мені потрібен вихід, як згадував Ігор. Мені потрібна повна різниця в секундах.
Арун

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

У випадку, якщо у когось є проблема, використовуйте виписку .


Він також не працює з позначками часу та часовими поясами.
Родольфо
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.