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;
をもOKですが、再びこれを試してみましょうが、ありますto_char(start_order、 'MM')= to_char(ppd_start)とto_char(end_order、 'MM')を使用するときに、(ppd_startとppd_endの間の)2つの日付(start_orderとend_order)フィールドを使用して、 = to_char(ppd_end、 'MM')とstart_order!= ppd_startとend_order!= ppd_endとppd_endとppd_endとの間ではなくppd_endとend_orderの間ではなく、ppd_startとppd_endの間ではないstart_order)どうして? – Frank
SQLのOVERLAPS演算子は2つの日付をとります。私は重複の例を含めるために私の答えを編集しました。 –
興味深いですが、SQLはWebページ内で実行されています。したがって、ドロップダウン選択はデータベース内の選択されたテーブルに関連付けられ、選択されたアイテムはSQLに入力されたと言われています。だから私は現場で物理的な日付を使わなくても、このSQLをどのように動作させるかについては、サイト上ではほとんど望みません。 DDL_1は、検索を実行する物理年を選択してpp_yrから取得し、ppd_mon(1〜12)から引き出したDDL_2からレビューする月を選択し、to_char(start_order、 'MM')= ppd_monを使用して比較を行い、 to_char(end_order、 'MM')= ppd_monとstart_orderはppdの間ではありません* – Frank