add batch remove batch split batch comment selection show hidden batches hide batch highlight batch
db<>fiddle
donate feedback about
By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
select version();
version()
8.0.36
CREATE TABLE intervals (
num int,
valid_from datetime,
valid_until datetime
);
INSERT INTO intervals
(num, valid_from, valid_until)
VALUES
(1, NOW(), ADDDATE(NOW(), 7)),
(2, ADDDATE(NOW(), 1), ADDDATE(NOW(), 8)),
(3, ADDDATE(NOW(), 2), ADDDATE(NOW(), 9));

Records: 3  Duplicates: 0  Warnings: 0
SELECT *
FROM (
SELECT ordered_intervals.dt as dt,
SUM(ordered_intervals.dt_ord) OVER (ORDER BY ordered_intervals.dt ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) AS count
FROM (
SELECT pt.valid_from as dt, 1 as dt_ord FROM intervals pt
UNION
SELECT pt2.valid_until as dt, -1 as dt_ord FROM intervals pt2
ORDER BY dt
) as ordered_intervals
) as sums
WHERE sums.count < 3
ORDER BY sums.dt ASC
dt count
2024-07-23 09:41:56 2
2024-07-25 09:41:56 1
2024-07-30 09:41:56 -1
2024-07-31 09:41:56 -3
2024-08-01 09:41:56 -2