Что дБмс?
Итак, у вас есть такой стол?
CREATE TABLE something
(
pay_period_start date NOT NULL,
pay_period_end date NOT NULL,
CONSTRAINT something_pkey PRIMARY KEY (pay_period_start),
CONSTRAINT something_pay_period_end_key UNIQUE (pay_period_end),
CONSTRAINT something_check CHECK (pay_period_end > pay_period_start)
);
insert into something values ('2010-08-01', '2010-08-14');
insert into something values ('2010-08-15', '2010-08-28');
insert into something values ('2010-08-29', '2010-09-11');
Тогда я могу выполнить этот запрос. («2010-08-14» - это значение вашего столбца стоп-ордера или столбца конечного ордера или чего-то подобного.)
select * from something
where '2010-08-14' not between pay_period_start and pay_period_end
order by pay_period_start;
и я получаю
2010-08-15;2010-08-28
2010-08-29;2010-09-11
Для пар дат используйте оператор OVERLAPS. Этот запрос
select * from something
where
(date '2010-08-01', date '2010-08-14') overlaps
(pay_period_start, pay_period_end)
order by pay_period_start;
возвращает
2010-08-01;2010-08-14
Чтобы исключить строки, в которых начальный и конечный порядок точно совпадают с периодом оплаты, используйте что-то вроде этого:
select * from something
where (
(date '2010-08-01', date '2010-08-14') overlaps
(pay_period_start, pay_period_end) and
(date '2010-08-01' <> pay_period_start) and
(date '2010-08-14' <> pay_period_end)
)
order by pay_period_start;