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:00
SELECT 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:00
SELECT 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:00
SELECT 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
関連項目: