Oracle Databaseでは、FROM_TZ()
関数は、タイムスタンプ値とタイムゾーンをTIMESTAMP WITH TIME ZONE
に変換します 値。
タイムスタンプ値とタイムゾーンを2つの別個の引数として渡すと、関数はそれらを TIMESTAMP WITH TIME ZONE
として返します。 値。
構文
構文は次のようになります:
FROM_TZ(timestamp_value, time_zone_value)
timestamp_value
の場所 はタイムスタンプであり、 time_zone_value
'TZH:TZM'
の形式の文字列です または、TZR
で文字列を返す文字式 オプションのTZD
フォーマット。
例
次に例を示します:
SELECT
FROM_TZ(TIMESTAMP '2030-01-01 12:30:35', '-04:00')
FROM DUAL;
結果:
01/JAN/30 12:30:35.000000000 PM -04:00
タイムゾーンリージョンの指定
タイムゾーンオフセットの代わりにタイムゾーンリージョンを使用する例を次に示します。
SELECT
FROM_TZ(TIMESTAMP '2030-01-01 12:30:35', 'America/St_Kitts')
FROM DUAL;
結果:
01/JAN/30 12:30:35.000000000 PM AMERICA/ST_KITTS
タイムゾーンの変更
AT LOCAL
を使用できます またはAT TIME ZONE
結果のタイムスタンプを別のタイムゾーンに変更する句。
例:
SELECT
FROM_TZ(TIMESTAMP '2030-01-01 12:30:35', 'America/St_Kitts')
AT TIME ZONE 'Asia/Bangkok'
FROM DUAL;
結果:
01/JAN/30 11:30:35.000000000 PM ASIA/BANGKOK
そして、ここではAT LOCAL
を使用しています :
SELECT
FROM_TZ(TIMESTAMP '2030-01-01 12:30:35', 'America/St_Kitts')
AT LOCAL
FROM DUAL;
結果:
02/JAN/30 02:30:35.000000000 AM AUSTRALIA/BRISBANE
SESSIONTIMEZONE
を使用できます 現在のセッションのタイムゾーンを確認する関数、およびDBTIMEZONE
データベースのタイムゾーンを確認します。
無効なタイムゾーン
無効なタイムゾーンを渡すと、エラーが発生します:
SELECT
FROM_TZ(TIMESTAMP '2030-01-01 12:30:35', 'Mars/Rover')
FROM DUAL;
結果:
Error starting at line : 1 in command - SELECT FROM_TZ(TIMESTAMP '2030-01-01 12:30:35', 'Mars/Rover') FROM DUAL Error report - ORA-01882: timezone region not found>
V$TIMEZONE_NAMES
にクエリを実行すると、有効なタイムゾーンリージョンのリストを取得できます。 ビュー。
許容範囲外のタイムゾーンオフセットを指定すると、次のようになります。
SELECT
FROM_TZ(TIMESTAMP '2030-01-01 12:30:35', '+50:00')
FROM DUAL;
結果:
Error starting at line : 1 in command - SELECT FROM_TZ(TIMESTAMP '2030-01-01 12:30:35', '+50:00') FROM DUAL Error report - ORA-01874: time zone hour must be between -15 and 15
ヌル引数
null
を渡す 最初の引数の場合、エラーが発生します:
SET NULL 'null';
SELECT
FROM_TZ(null, '+10:00')
FROM DUAL;
結果:
Error starting at line : 1 in command - SELECT FROM_TZ(null, '+10:00') FROM DUAL Error at Command Line : 2 Column : 13 Error report - SQL Error: ORA-00932: inconsistent datatypes: expected TIMESTAMP got CHAR 00932. 00000 - "inconsistent datatypes: expected %s got %s" *Cause: *Action:
null
を渡す 2番目の引数はnull
を返します :
SET NULL 'null';
SELECT
FROM_TZ(TIMESTAMP '2030-01-01 12:30:35', null)
FROM DUAL;
結果:
null
デフォルトでは、SQLclとSQL*Plusはnull
の場合は常に空白を返すことに注意してください。 SQL SELECT
の結果として発生します 声明。
ただし、SET NULL
は使用できます 返される別の文字列を指定します。上記の例では、文字列null
を指定しました 返却する必要があります。
引数の数が無効です
無効な数の引数を渡すと、エラーが発生します:
SELECT FROM_TZ(TIMESTAMP '2030-01-01 12:30:35')
FROM DUAL;
結果:
Error starting at line : 1 in command - SELECT FROM_TZ(TIMESTAMP '2030-01-01 12:30:35') 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: