PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Tsrange - Tính toán sự khác biệt giữa hai phạm vi

Bạn sẽ phải tách phạm vi ra khỏi tài liệu

Để thực hiện việc này, bạn có thể sử dụng lowerupper

SELECT tsrange(  lower(freetime), lower(appointment)  )  AS before_appointment,
       tsrange(  upper(appointment), upper(freetime)  )  AS after_appointment
FROM ( VALUES
  (
    '[2017-04-19 09:00, 2017-04-19 12:30)'::tsrange,
    '[2017-04-19 10:30, 2017-04-19 11:30)'::tsrange
  )
) AS t(freetime,appointment)
WHERE freetime @> appointment;

              before_appointment               |               after_appointment               
-----------------------------------------------+-----------------------------------------------
 ["2017-04-19 09:00:00","2017-04-19 10:30:00") | ["2017-04-19 11:30:00","2017-04-19 12:30:00")
(1 row)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. INSERT [...] ON CONFLICT có thể được sử dụng cho các vi phạm khóa ngoại không?

  2. Postgres hàm INSERT hàng loạt bằng cách sử dụng các đối số JSON

  3. Làm thế nào để sử dụng cài đặt biến trong các chức năng kích hoạt?

  4. PostgreSQL bigserial &nextval

  5. Làm thế nào để thả nhiều (nhưng không phải tất cả) bảng trong một lần rơi?