17.10 - 結果のタイプ - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLの日付/時刻関数と式

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Release Date
2021年7月
Content Type
プログラミング リファレンス
Publication ID
B035-1211-171K-JPN
Language
日本語 (日本)
  • 期間式に重複部分がない場合、結果はNULLになります。どちらかの期間式がNULLの場合、結果はNULLになります。それ以外の場合の結果は、期間式の間で比較できるPeriodデータ型になります。
  • 期間式の間で精度が異なるPERIOD(TIMESTAMP(n) [WITH TIME ZONE])またはPERIOD(TIME(n) [WITH TIME ZONE])データ型があると、結果は精度が高い方のデータ型のPeriod値になります。どちらの期間式にもタイムゾーンがない場合、結果の期間はタイムゾーンを持ちません。それ以外の場合には、結果の期間はタイムゾーンを持ち、結果のタイムゾーンの値は次に示すルールにより決定されます:
    • 両方の期間式に1つのタイムゾーンがある場合、結果の境界に含まれるタイムゾーンの変移は、後述のPeriod値コンストラクタで定義されているように、期間式の一致する境界から取得されます。
    • どちらか一方の期間式にのみタイムゾーンがある場合、もう一方の期間式は現在のセッションのタイムゾーンにあるとみなされ、結果は次に示すように計算されます。

例えば、p1およびp2が期間式で、上述のとおりに決定された結果の構成要素のタイプがrtだとします。p1 OVERLAPS p2がTRUEの場合、p1 P_INTERSECT p2の結果は次のようになります。

PERIOD(
  CASE WHEN CAST(BEGIN(p1) AS rt) >= CAST(BEGIN(p2) AS rt)
     THEN CAST(BEGIN(p1) AS rt)
     ELSE CAST(BEGIN(p2) AS rt) END,
  CASE WHEN CAST(END(p1) AS rt) <= CAST(END(p2) AS rt)
     THEN CAST(END(p1) AS rt)
     ELSE CAST(END(p2) AS rt) END)

内部的には、Period値はUTCで保存されます。その後で、それらの値のUTC表示形式を使用してOVERLAPS演算子が評価され、重複があるとP_INTERSECT操作が実行されます。