Oracle Databaseでは、SYS_EXTRACT_UTC()
関数は、タイムゾーンオフセットまたはタイムゾーンリージョン名を使用して日時値からUTC(協定世界時)を抽出します。
構文
構文は次のようになります:
SYS_EXTRACT_UTC(datetime_with_timezone)
例
デモンストレーションの例を次に示します。
SELECT
SYS_EXTRACT_UTC(TIMESTAMP '2035-08-25 10:30:45.123456789 +04:00')
FROM DUAL;
結果:
25/AUG/35 06:30:45.123456789 AM
結果の形式は、NLS_TIMESTAMP_FORMAT
の値によって異なります。 パラメータ。このパラメータのデフォルト値は、NLS_TERRITORY
から派生しています。 パラメータ。これらのいずれかを変更すると、SYS_EXTRACT_UTC()
の形式が変更される可能性があります セッションの機能。
例:
ALTER SESSION SET NLS_TIMESTAMP_FORMAT = 'DD-MON-RRRR HH24:MI:SSXFF';
SELECT
SYS_EXTRACT_UTC(TIMESTAMP '2035-08-25 10:30:45.123456789 +04:00')
FROM DUAL;
結果:
25-AUG-2035 06:30:45.123456789
NLS_TERRITORY
を設定すると次のようになります。 AMERICA
へのパラメータ :
ALTER SESSION SET NLS_TERRITORY = 'AMERICA';
SELECT
SYS_EXTRACT_UTC(TIMESTAMP '2035-08-25 10:30:45.123456789 +04:00')
FROM DUAL;
結果:
25-AUG-35 06.30.45.123456789 AM
このパラメータを変更すると、NLS_TIMESTAMP_FORMAT
が暗黙的に設定されます。 AMERICA
の形式に 。
詳細と例については、セッションの日付形式を変更する方法をご覧ください。
タイムゾーンリージョン名
または、タイムゾーンオフセットの代わりにタイムゾーンリージョン名を使用することもできます。
例:
SELECT
SYS_EXTRACT_UTC(TIMESTAMP '2035-08-25 10:30:45.123456789 Asia/Bangkok')
FROM DUAL;
結果:
25-AUG-35 03.30.45.123456789 AM
デフォルトのタイムゾーン
タイムゾーンが指定されていない場合、日時はセッションのタイムゾーンに関連付けられます。
例:
SELECT SYS_EXTRACT_UTC(TIMESTAMP '2035-08-25 10:30:45.123456789')
FROM DUAL;
結果:
25-AUG-35 12.30.45.123456789 AM
SESSIONTIMEZONE
を使用して、現在のセッションのタイムゾーンを確認できます。 機能:
SELECT SESSIONTIMEZONE
FROM DUAL;
結果:
Australia/Brisbane
これを変更する例については、Oracleでタイムゾーンを変更する4つの方法を参照してください。
ヌル引数
null
を渡す エラーが発生します:
SELECT SYS_EXTRACT_UTC(null)
FROM DUAL;
結果:
Error starting at line : 1 in command - SELECT SYS_EXTRACT_UTC(null) FROM DUAL Error at Command Line : 1 Column : 24 Error report - SQL Error: ORA-30175: invalid type given for an argument 30175. 00000 - "invalid type given for an argument" *Cause: There is an argument with an invalid type in the argument list. *Action: Use the correct type wrapper for the argument.
引数がありません
引数の数が間違っているか、引数を渡さずに関数を呼び出すと、エラーが発生します:
SELECT SYS_EXTRACT_UTC()
FROM DUAL;
結果:
Error starting at line : 1 in command - SELECT SYS_EXTRACT_UTC() FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments" *Cause: *Action: