PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Tsrange - Obliczanie różnicy między dwoma zakresami

Będziesz musiał oddzielić zakres od dokumentacji

W tym celu możesz użyć lower i upper

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. Wstaw nowy element w kolumnie JSONB na podstawie wartości innego pola - postgres

  2. Jak renderować relacje jeden do wielu w XML za pomocą PostgreSQL

  3. Mam problem z przeniesieniem mojej aplikacji rails do Heroku/z instalacją klejnotu „pg”?

  4. Nie rób nic w procedurze wyzwalania

  5. Po co w ogóle używać *DB.exec() lub przygotowanych instrukcji w Golangu?