- 例えば、p1およびp2が比較できる期間式と仮定します。p1 OVERLAPS p2がTRUE、BEGIN(p1)がBEGIN(p2)より小さい場合にp1 LDIFF p2はPERIOD(BEGIN(p1), BEGIN(p2))を返します。期間式がNULL、p1 OVERLAPS p2がFALSE、またはBEGIN(p1)がBEGIN(p2)より小さくない場合、結果はNULLになります。
- 期間式の間で精度が異なるPERIOD(TIME(n) [WITH TIME ZONE])またはPERIOD(TIMESTAMP(n) [WITH TIME ZONE])データ型があると、結果は精度が高い方になります。期間式のいずれかにタイムゾーンが含まれ、もう1つの期間式に含まれていない場合、結果には各要素のタイムゾーンが含まれています。結果のタイムゾーンは、次に示すルールを使用して評価されます。
- 両方の期間式に1つのタイムゾーンがある場合、結果の境界に含まれるタイムゾーンの変位は、後述のPeriod値コンストラクタで定義されているように、式の一致する境界から取得されます。
- どちらか一方の期間式にのみタイムゾーンがある場合、もう一方の期間式は現在のセッションのタイムゾーンにあるとみなされ、結果は次に示すように計算されます。
例えば、p1およびp2が期間式で、上述のとおりに決定された結果の構成要素のタイプがrtだとします。p1 OVERLAPS p2がTRUEの場合、p1 LDIFF p2の結果は次のようになります。
PERIOD( CASE WHEN CAST(BEGIN(p1) AS rt) < CAST(BEGIN(p2) AS rt) THEN CAST(BEGIN(p1) AS rt) ELSE NULL END, CASE WHEN CAST(BEGIN(p1) AS rt) < CAST(BEGIN(p2) AS rt) THEN CAST(BEGIN(p2) AS rt) ELSE NULL END)
内部的には、Period値はUTCで保存されます。その後で、それらの値のUTC表示形式を使用してOVERLAPS演算子が評価され、重複があるとLDIFF操作が実行されます。