mysql 时间段取并集
时间: 2023-07-13 10:33:31 浏览: 60
要取两个时间段的并集,需要找出这两个时间段交集的开始和结束时间。可以使用以下 SQL 语句:
```
SELECT
IFNULL(
LEAST(t1.end_time, t2.end_time),
GREATEST(t1.start_time, t2.start_time)
) AS start_time,
GREATEST(t1.start_time, t2.start_time) AS end_time
FROM
(SELECT '2022-01-01 08:00:00' AS start_time, '2022-01-01 10:00:00' AS end_time) AS t1,
(SELECT '2022-01-01 09:00:00' AS start_time, '2022-01-01 11:00:00' AS end_time) AS t2
WHERE
t1.start_time <= t2.end_time AND t1.end_time >= t2.start_time;
```
这里假设有两个时间段,一个为 2022-01-01 08:00:00 到 2022-01-01 10:00:00,另一个为 2022-01-01 09:00:00 到 2022-01-01 11:00:00。可以将这两个时间段表示成两个子查询 t1 和 t2。然后使用 WHERE 子句找出这两个时间段的交集,并使用 IFNULL、LEAST 和 GREATEST 函数来计算出交集的开始和结束时间,从而得到这两个时间段的并集。