PERIOD(DATE)、PERIOD(TIME(n) [WITH TIME ZONE])、またはPERIOD(TIMESTAMP(n) [WITH TIME ZONE])の値は、CAST関数を使用するとTIMESTAMP[(n)] [WITH TIME ZONE]としてキャストできます。ソースの最後の値は、ソースの開始境界と等しくなければなりません。そうでないと、エラーが報告されます。
ソースの型がPERIOD(TIME(n) [WITH TIME ZONE])またはPERIOD(TIMESTAMP(n)[WITH TIME ZONE])の場合、次のようになります。
- ターゲットの精度がソースの精度より高い場合、精度を調整するために結果の末尾にゼロが追加されます。
- ターゲットの精度がソースの精度より低い場合、エラーが報告されます。
ソースのタイプがPERIOD(DATE)の場合、結果は現在のセッションのタイムゾーンに調整されたソースの開始境界とゼロの時間部分で作成されます。ターゲットのタイプがWITH TIME ZONEならば、現在のセッションのタイムゾーン変位も追加されます。
ソースのタイプがPERIOD(TIME(n) [WITH TIME ZONE])の場合、ソースの(UTCでの)開始境界は現在のセッションのタイムゾーン変位に調整されます。結果のタイムスタンプ部分は、CURRENT_DATEと前述の調整を実行した後に取得したソースの開始境界の時間部分から作成されます。結果のタイムスタンプ値は、UTCに変換されます。ソースとターゲットのタイプがどちらもWITH TIME ZONEの場合、結果のタイムゾーンフィールドはソースの開始境界のタイムゾーン変位に設定されます。ターゲットのタイプのみがWITH TIME ZONEの場合、結果のタイムゾーンフィールドは現在のセッションのタイムゾーン変位に設定されます。
ソースのタイプがPERIOD(TIMESTAMP(n) [WITH TIME ZONE])の場合、結果のタイムスタンプ部分はソースの開始境界のタイムスタンプ部分になります。ソースとターゲットのタイプがどちらもWITH TIME ZONEの場合、結果のタイムゾーンフィールドはソースの開始境界のタイムゾーン変位に設定されます。ターゲットのタイプのみがWITH TIME ZONEの場合、結果のタイムゾーンフィールドは現在のセッションのタイムゾーン変位に設定されます。