です。 overlaps
オペレータは
row_constructor overlaps row_constructor
として定義され、行コンストラクタは、フォーム
Lsのが
左側は、を開始
ルは
左端を意味し、意味
(Ls, Le) OVERLAPS (Rs, Re)
を持っています
overlaps
演算子はdefiです。この表現と意味的に等価であることを条件とする。
(Ls > Rs and (Ls < Re or Le < Re)) or
(Rs > Ls and (Rs < Le or Re < Le)) or
(Ls = Rs and Le is not null and Re is not null)
値を代用すると、次のようになります。 (テストされていません)
select *
from myTable
where ('2002-12-29' > fec_inicio and ('2002-12-29' < fec_fin or '2002-12-30' < fec_fin)) or
(fec_inicio > '2002-12-29' and (fec_inicio < '2002-12-30' or fec_fin < '2002-12-30')) or
('2002-12-29' = fec_inicio and '2002-12-30' is not null and fec_fin is not null);
私はこれらの置換が正しいことを望みます。 (そして希望がうまくスケールされないことを知っています)
複数の行に重なる範囲で何をする必要があるのかはあなたの質問からは分かりません。しかし、例えば、上のクエリから最小の日付を選択するだけで十分ですが、完全な行を取得するにはその日付のinner join
にする必要があります。
これまで述べてきたように、パーセンテージを選択するというあなたの論理は奇妙に見えます。考えてみましょう。
BETWEEN演算子を使用してみましたか? –
あなたが2002-12-29と2003-10-25を持っていれば何パーセント見たいですか?どのようにロジックが正しく見えないのか。あなたは、比較するべき日付を1つしか持たず、その日付の割合を得るべきではありませんか? – Stephen
まだ苦労していますか? http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple-sql-queryを参照してください。 – Strawberry