TO_UTC_TIMESTAMP_TZ
目的
SQLファンクションTO_UTC_TIMESTAMP_TZは、varchar入力としてISO 8601の日付フォーマット文字列を受け取り、SQLデータ型TIMESTAMP WITH TIMEZONEのインスタンスを戻します。入力はUTC時間(協定世界時、以前はグリニッジ標準時)に正規化されます。SQLファンクションTO_TIMESTAMP_TZとは異なり、新しいファンクションでは入力文字列がISO 8601日付形式を使用して、タイムゾーンをUTC 0にデフォルト設定すると想定しています。
このファンクションの一般的な使用方法として、SQLファンクションSYS_EXTRACT_UTCにその出力を提供し、UTC時間を取得してこれをSQLバインド変数としてSQL/JSON条件JSON_EXISTSに渡し、タイムスタンプ範囲の比較を実行します。
これは、日付と時刻に許可されている構文です。
-
日付(のみ):
YYYY-MM-DD -
日時:
YYYY-MM-DDThh:mm:ss[.s[s[s[s[s[s]]]]][Z|(+|-)hh:mm]
説明:
-
YYYYは年を4桁の10進数で指定します。 -
MMは月を2桁の10進数の00から12で指定します。 -
DDは日を2桁の10進数の00から31で指定します。 -
hhは時を2桁の10進数の00から23で指定します。 -
mmは分を2桁の10進数の00から59で指定します。 -
ss[.s[s[s[s[s]]]]]は秒を2桁の10進数の00から59で、必要に応じて小数点と1桁から6桁の10進数(秒の小数部を表す)を続けて指定します。 -
ZはUTC時間(タイムゾーン0)を指定します。(+00:00で指定することもできますが、–00:00で指定することはできません。) -
(+|-)hh:mmはタイムゾーンをUTCとの差として指定します。(+または–のいずれか1つを指定する必要があります。)
時間値の場合、タイムゾーン部分はオプションです。これが指定されていない場合、UTC時間が仮定されます。
他のISO 8601日時構文はサポートされていません。具体的には、次のとおりです。
-
ハイフンで始まるマイナスの日付(BCE 1年より前の日付) (たとえば
–2018–10–26T21:32:52)はサポートされていません。 -
ハイフンおよびコロン区切文字を入力する必要があります。いわゆる「基本」形式の
YYYYMMDDThhmmssはサポートされていません。 -
序数日(年+通日、暦週+日数)はサポートされていません。
-
4桁より大きい年の使用はサポートされていません。
サポートされている日付と時刻は次のとおりです。
-
2018–10–26T21:32:52 -
2018-10-26T21:32:52+02:00 -
2018-10-26T19:32:52Z -
2018-10-26T19:32:52+00:00 -
2018-10-26T21:32:52.12679
サポートされていない日付と時刻は次のとおりです。
-
2018-10-26T21:32(時刻が指定されている場合は、そのすべての部分が存在する必要があります) -
2018-10-26T25:32:52+02:00(時の部分が25で、範囲外です) -
18-10-26T21:32(年が完全に指定されていません)
例
SELECT TO_UTC_TIMESTAMP_TZ('1998-01-01') FROM DUAL;
TO_UTC_TIMESTAMP_TZ('1998-01-01')
---------------------------------------------------------------------------
01-JAN-98 12.00.00.000000000 AM +00:00SELECT TO_UTC_TIMESTAMP_TZ('2000-01-02T12:34:56.789') FROM DUAL;
TO_UTC_TIMESTAMP_TZ('2000-01-02T12:34:56.789')
---------------------------------------------------------------------------
02-JAN-00 12.34.56.789000000 PM +00:00SELECT TO_UTC_TIMESTAMP_TZ('2016-05-05T00:00:00.000Z') FROM DUAL;
TO_UTC_TIMESTAMP_TZ('2016-05-05T00:00:00.000Z')
---------------------------------------------------------------------------
05-MAY-16 12.00.00.000000000 AM +00:00SELECT TO_UTC_TIMESTAMP_TZ('2016-05-05T02:04:35.4678Z') FROM DUAL;
TO_UTC_TIMESTAMP_TZ('2016-05-05T02:04:35.4678Z')
---------------------------------------------------------------------------
05-MAY-16 02.04.35.467800000 AM +00:00関連項目:
