PostgreSQL时间跨度

时间:2019-10-25 14:32:31

标签: postgresql

我有一张桌子:

CREATE TABLE "Trips" (
"TripId" integer NOT NULL,
"DepartureDate" timestamp without time zone NOT NULL,
"ArrivalDate" timestamp without time zone NOT NULL,
);

我需要确定一条记录的时间范围是否落在另一条记录的时间范围内。 例如:

Tripid |     DepartureDate     |      ArrivalDate
   1   | 2019-11-13 00:00:00.0 | 2030-11-13 00:00:00.0
   2   | 2020-11-13 00:00:00.0 | 2022-11-13 00:00:00.0
   3   | 2005-11-13 00:00:00.0 | 2006-11-13 00:00:00.0

第二条记录的时间跨度在第一条记录的跨度之内。 如何确定哪个时间段属于另一个时间段的记录

1 个答案:

答案 0 :(得分:0)

这将显示所有容纳物:

SELECT t1.*, t2.*
FROM "Trips" AS t1
   JOIN "Trips" AS t2
      ON tsrange(t1."DepartureDate", t1."ArrivalDate")
         @> tsrange(t2."DepartureDate", t2."ArrivalDate");
相关问题