什么dbms?
所以你有这样的桌子?
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;
好吧,让我们再试试这个,是有一种方法可以在我使用(其中to_char(start_order,'MM')= to_char(ppd_start)和to_char(end_order,'MM'))之间使用两个日期(start_order和end_order)字段(ppd_start和ppd_end) = to_char(ppd_end, 'MM')和start_order!= ppd_start和end_order!= ppd_end和start_order不在ppd_start和ppd_end之间,end_order不在ppd_start和ppd_end之间),但它会一直显示符合ppd_start和ppd_end之间的日期。为什么? – Frank 2011-01-21 01:46:52