TIMEZONE スカラー関数

TIMEZONE スカラー関数は、あるタイム・ゾーンの日時を別のタイム・ゾーンのタイム・スタンプに変換します。

構文図を読む構文図をスキップする TIMEZONE ( datetime-expression , from-timezone , to-timezone )

スキーマは SYSIBM です。

datetime-expression
データ・タイプ DATE、TIMESTAMP、CHAR、または VARCHAR の値を返す式。 Unicode データベースでは、式はデータ・タイプ GRAPHIC または VARGRAPHIC にすることもできます。 データ・タイプ CHAR、VARCHAR、GRAPHIC、または VARGRAPHIC の値は、TIMESTAMP スカラー関数 スカラー関数で使用できる有効なストリングでなければなりません。 そのようなストリングは、変換される前にタイム・スタンプに暗黙的にキャストされます。
from-timezone
入力日時式によって返される値のタイム・ゾーンを指定する式。
to-timezone

出力タイム・スタンプのタイム・ゾーンを指定する式。

to-timezone 式または from-timezone 式によって返される値:
  • Internet Assigned Numbers Authority (IANA) タイム・ゾーン・データベースで指定されたタイム・ゾーン名が入った組み込み文字ストリング・データ・タイプでなければなりません (Unicode データベースでは、GRAPHIC ストリング・データ・タイプを指定することもできます) (SQLSTATE 22546)。
  • FOR BIT DATA サブタイプを指定することはできません (SQLSTATE 42815)。
値がデータ・タイプ VARCHAR でない場合、TIMEZONE 関数が評価される前に VARCHAR にキャストされます。
IANA データベースのタイム・ゾーン名の標準形式は、area/location です。
area
大陸や海洋の英語名か、Etc という特殊な地域名です。
location
指定地域内の場所の英語名です。 これは通常、都市や小さな島です。
例:

"America/Toronto"  [The North American city of Toronto]
"Asia/Sakhalin"    [The Asian island of Sakhalin]  
"Etc/UTC"          [Coordinated Universal Time]

有効なタイム・ゾーン名と関連規則の詳細リストについては、IANA タイム・ゾーン・データベースを参照してください。 データベース・サーバーは、2010c バージョンの IANA タイム・ゾーン・データベースを使用しています。それより新しいバージョンの IANA タイム・ゾーン・データベースが必要な場合は、IBM サポートにお問い合わせください。

出力タイム・スタンプの精度は、入力日時式によって返される値のデータ・タイプによって異なります。
  • 入力値がタイム・スタンプの場合、出力値は、入力値と同じ精度のタイム・スタンプです。
  • 入力値のデータ・タイプが DATE の場合、出力値のデータ・タイプは TIMESTAMP(0) です。
  • それ以外の場合、出力値のデータ・タイプは TIMESTAMP(6) です。

関数の引数のいずれかが NULL になる可能性がある場合、結果も NULL になる可能性があります。引数のいずれかが NULL の場合、その結果は NULL 値です。

  • 表 T1 の列 col1 のデータ・タイプは TIMESTAMP(3) であるため、以下のステートメントの出力のデータ・タイプも TIMESTAMP(3) になります。
    select TIMEZONE(col1, 'America/New_York', 'America/Los_Angeles')from T1;
    このステートメントは、2016-12-19-14.00.00.123 を返します。
  • 表 T5 の列 col3 のデータ・タイプは DATE のため、以下のステートメントの出力のデータ・タイプは TIMESTAMP(0) になります。
    select TIMEZONE(col3, 'America/New_York', 'America/Los_Angeles')from T5;
    このステートメントは、2016-07-14-23.00.00 を返します。
  • 以下の各ステートメントの入力はストリング・リテラルであるため、その出力のデータ・タイプは TIMESTAMP(6) になります。
    values TIMEZONE('2016-09-24 17:00:00.12345678', 'America/New_York', 'America/Los_Angeles');
    このステートメントは、2016-09-24-17.00.00.123456 を返します。
    values TIMEZONE('2016-09-24 17:00:00.123', 'America/New_York', 'America/Los_Angeles');
    このステートメントは 2016-09-24-17.00.00.123000 を返します。