Tìm sự khác biệt giữa các dấu thời gian tính bằng giây trong PostgreSQL


127

Tôi có một bảng PostgreSQL 8.3với 2 timestampcột. Tôi muốn nhận được sự khác biệt giữa những điều này timestampstrong vài giây. Bạn có thể vui lòng giúp tôi làm thế nào để hoàn thành việc này?

TableA
(
  timestamp_A timestamp,
  timestamp_B timestamp
)

Tôi cần nhận được một cái gì đó giống như tính (timestamo_B - timestamp_A)bằng giây (không chỉ là sự khác biệt giữa các giây, nó phải bao gồm giờ, phút, v.v.) .

Câu trả lời:


239

Thử: 

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

Chi tiết tại đây: CHIẾT KHẤU .


3
Cảm ơn rất nhiều cho câu trả lời. Nó đã làm việc !!! Trong truy vấn trên, chúng tôi thiếu dấu ngoặc đóng. Nhưng tôi đã tìm ra nó. Cảm ơn rất nhiều cho câu trả lời nhanh chóng của bạn.
Arun

30
select age(timestamp_A, timestamp_B)

Trả lời bình luận của Igor:

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

Nó sẽ không làm công việc. Nó sẽ Subtract arguments, producing a "symbolic" result that uses years and months. Nó sẽ không đưa ra sự khác biệt trong vài giây.
Igor Romanchenko

@Igor Cập nhật kết quả bao gồm cả giây. OP muốn không chỉ giây nhưng cũng phút, giờ, vv
Clodoaldo Neto

5
Nếu tôi hiểu anh ấy một cách chính xác, anh ấy muốn to get the difference between these timestamps in seconds. Và it should include hours, minutes etccó nghĩa là nó phải là sự khác biệt đầy đủ như thế nào 10:25:30 - 10:15:25 = 605 seconds. Tôi đoán - ông sử dụng EXTRACT(SECONDS FROM ...)và nhận được10:25:30 - 10:15:25 = 5 seconds
Igor Romanchenko

1
@Igor Nó không rõ ràng lắm nhưng bây giờ bạn nói điều đó, tôi nghĩ bạn có thể đúng.
Clodoaldo Neto 24/12/12

@Clodoaldo: Tôi cần đầu ra như Igor đã đề cập. Tôi cần sự khác biệt đầy đủ trong vài giây.
Arun

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

Trong trường hợp nếu ai đó đang gặp sự cố khi sử dụng giải nén .


Nó cũng không hoạt động với dấu thời gian với múi giờ.
Rodolfo
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.