sql >> Databasteknik >  >> RDS >> PostgreSQL

Tsrange - Beräknar skillnaden mellan två intervall

Du måste bryta isär intervallet, från dokumenten a>

För att göra detta kan du använda lower och 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. SQL Gilla till RegEx

  2. Tom PHP-utdata från MySQL-databas för en longblob

  3. 10 ovanliga Microsoft Access 2019-tips

  4. Hur CONCAT() fungerar i MariaDB