PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Tsrange - Изчисляване на разликата между два диапазона

Ще трябва да разделите обхвата от документите

За да направите това, можете да използвате lower и 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. Как да накарам postgresSQL да работи на компютър с Windows 7 с django?

  2. docker postgres pgadmin локална връзка

  3. Ръководство за разделяне на данни в PostgreSQL

  4. psycopg2 + pgbouncer. Асинхронен режим с грешка в gevent

  5. PostgreSQL изтрива цялото съдържание