すべてのプロダクト
Search
ドキュメントセンター

Hologres:タイムゾーン

最終更新日:Feb 05, 2026

世界中の国やリージョンは経度が異なるため、現地時間も異なり、その結果、異なるタイムゾーンが生まれます。このトピックでは、Hologres のタイムゾーンについて説明します。

タイムゾーンの概要

混乱を避けるため、世界は公式に 24 のタイムゾーン (東に 12、西に 12) に分けられています。イギリスの旧グリニッジ天文台を通る本初子午線が、ゼロタイムゾーンを定義しています。東のタイムゾーンには 1 から 12 (+) の番号が付けられ、西のタイムゾーンには 1 から 12 (-) の番号が付けられています。各タイムゾーンは経度 15 度にわたり、1 時間の差を表します。国際的には、タイムゾーンを表すために GMT と UTC の 2 つの標準が使用されています。

  • GMT 0:00

    グリニッジ標準時 (GMT) は、イギリスのグリニッジ天文台での観測に基づいています。かつては世界の標準時として使用されていました。

  • UTC +00:00

    協定世界時 (UTC) は、現在の世界の標準時です。地球の自転は徐々に遅くなっており、毎年ほんのわずかな秒数が加わるため、UTC を管理する組織は、人間の知覚を反映する天文時と原子時 (UTC) を一致させるために、定期的にうるう秒を追加します。

説明
  • UTC は特定の場所に関連付けられておらず、現地時間を表すものではありません。現地時間を指定するには、タイムゾーンオフセットを追加する必要があります。したがって、GMT は UTC と等価ではありません。むしろ、GMT は UTC+0 と等しくなります。この関係は GMT = UTC+0 と表されます。グリニッジは単にゼロタイムゾーン内に位置しているだけです。

  • +08 は UTC+8 タイムゾーンを示し、ゼロタイムゾーンより 8 時間進んでいます。

Hologres は PostgreSQL プロトコルと互換性があり、POSIX タイムゾーン仕様に準拠しています。この仕様では、タイムゾーンオフセットの符号が逆になり、負の符号は東のタイムゾーンを示します。Hologres は、すべての日付と時刻の値を協定世界時 (UTC) で格納します。デフォルトでは、すべてのリージョンで UTC より 8 時間進んでいる UTC-08 タイムゾーン (中国標準時) が使用されます。Hologres は、タイムゾーン情報のない値を格納するための TIMESTAMP と、タイムゾーン情報のある値を格納するための TIMESTAMPTZ の 2 つのデータ型も提供します。

説明

タイムゾーン情報を含むデータには、TIMESTAMPTZ データ型を使用してください。

名前

説明

精度

データ表示例

TIMESTAMP

フォーマットは date + time で、タイムゾーン情報はありません。

格納されるデータは書き込まれたデータと同じです。クライアントのタイムゾーンを変更しても、格納された値は変わりません。クライアントは、タイムゾーンオフセットなしで、書き込まれた生のデータを表示します。

マイクロ秒

2022-01-01 01:01:01.123456

TIMESTAMP WITH TIME ZONE (TIMESTAMPTZ)

フォーマットは date + time で、タイムゾーン情報があります。

Hologres は TIMESTAMPTZ データを UTC 値として格納します。TIMESTAMPTZ フィールドに値を挿入すると、Hologres は自動的に値をクライアントのタイムゾーンから UTC に変換します。クエリ結果を表示する際、Hologres はクライアントの TimeZone パラメーターに基づいて UTC 値をクライアントの現地時間に戻します。

ミリ秒

2022-02-01 10:33:20.125+08

デフォルトタイムゾーンの表示

  • 現在のクライアントのタイムゾーンを表示します。

    show timezone;
    説明
    • HoloWeb では、結果はインスタンスのデフォルトタイムゾーン (PRC) を示し、これは UTC+8 に対応します。

    • 他の開発者ツールを使用していて、クエリ結果がデフォルトのタイムゾーンと異なる場合、クライアントのタイムゾーン構成が変更されています。

  • システムテーブルをクエリして、各リージョンのタイムゾーンを表示します。

    PostgreSQL では、pg_timezone_names システムテーブルに、さまざまなリージョンのデフォルトのタイムゾーン情報が格納されています。次のコマンドを実行してこのシステムテーブルをクエリし、各リージョンのタイムゾーンを表示します。

    select * from pg_timezone_names;

    システムテーブルのパラメーターは以下のとおりです。

    パラメーター

    説明

    name

    text

    タイムゾーン名。

    abbrev

    text

    タイムゾーンの略称。

    utc_offset

    interval

    UTC からのオフセット。正の値 (+) はグリニッジより東を示します。負の値 (-) はグリニッジより西を示します。

    is_dst

    boolean

    現在、夏時間が有効な場合は True (t)。それ以外の場合は False (f)。

クライアントタイムゾーンの変更

  • Hologres は、タイムゾーンを指定するために次のフォーマットをサポートしています。

    • 完全なタイムゾーン名 (例: America/New_York)。

    • UTC タイムゾーンオフセット:たとえば、-08:00:00 または UTC-08 のオフセットは、UTC+8 タイムゾーンに対応します。これは、POSIX タイムゾーン仕様が GMT および UTC オフセットの符号を逆にするためです。したがって、負の符号 (-) は UTC より東のタイムゾーンを示します。

次の表に、Hologres での一般的なタイムゾーンとそれに対応するパラメーター値を示します。

地域

タイムゾーン

タイムゾーンのフルネーム

UTC オフセット

  • 中国

  • シンガポール

  • マレーシア (クアラルンプール)

UTC+08

  • PRC

  • Asia/Shanghai

  • Asia/Singapore

  • Asia/Kuala_Lumpur

UTC+08

日本 (東京)

UTC+09

Asia/Tokyo

UTC+09

インドネシア (ジャカルタ)

UTC+07

Asia/Jakarta

UTC+07

ドイツ (フランクフルト)

UTC+01

Europe/Berlin

UTC+01

米国 (バージニア)

UTC-05

  • US/Eastern

  • America/New_York

UTC-05

米国 (シリコンバレー)

UTC-08

  • US/Pacific

  • America/Los_Angeles

UTC-08

  • クライアントタイムゾーンの変更

    デフォルトでは、Hologres は時刻を UTC で格納します。すべてのリージョンのデフォルトタイムゾーンは UTC+08 (中国標準時) です。次のコマンドでタイムゾーンパラメーターを設定することにより、クライアントに表示されるタイムゾーンを変更できます。

    説明

    タイムゾーンの変更は、クライアントでの表示方法にのみ影響し、基盤となるストレージの実際のタイムゾーン情報は変更しません。

    • セッションレベル

      SET コマンドを使用して、セッションレベルで Grand Unified Configuration (GUC) パラメーターを構成します。セッションレベルのパラメーターは現在のセッションにのみ適用され、接続が閉じられると失効します。SQL 文の前に次のようにコマンドを配置します。

      --タイムゾーンを Canada/Eastern に変更します。
      set timezone ='Canada/Eastern';
      
      --UTC より西の 5 番目のタイムゾーンに変更します。
      set timezone ='05:30:00';           
    • データベースレベル

      ALTER DATABASE <db_name> SET <value>; コマンドを使用して、データベースレベルで GUC パラメーターを構成します。

      説明

      このコマンドを実行した後:

      • 設定はデータベース全体に適用されます。変更を有効にするには、切断して再接続する必要があります。

      • 設定は新しいデータベースには適用されません。新しいデータベースごとに手動で構成する必要があります。

      使用方法は次のとおりです。

      -- データベースレベルのタイムゾーンを UTC-0 に変更します。
      alter database <db_name> set timezone = 'UTC-0';
      
      -- データベースレベルのタイムゾーンを UTC+5 に変更します。
      alter database <db_name> set timezone = 'UTC+05';

各データソースと Hologres の時刻データ型のマッピング

次の表は、さまざまなデータソースと Hologres の間の時刻関連データのデータ型マッピングを示しています。データの不整合やタイムゾーンのずれを避けるために、推奨されるマッピングに従ってください。

データソース

データソースのデータ型

ソースデータ例

Hologres のデータ型

マッピングされた Hologres データ例

説明

MySQL

DATETIME

2001-07-14 02:14:19

TIMESTAMP

2001-07-14 02:14:19

MySQL の DATETIME 型は、タイムゾーン情報なしで時刻を格納します。値の範囲は '1000-01-01 00:00:00' から '9999-12-31 23:59:59' です。

データが格納されるとき、変換なしで元の時刻フォーマットで保存されます。したがって、Hologres の TIMESTAMP 型にマッピングします。

TIMESTAMP

2019-02-23 05:21:16

TIMESTAMPTZ

2019-02-23 05:21:16+08

MySQL の TIMESTAMP 型は、デフォルトでタイムゾーン付きの UTC 時刻です。値の範囲は '1970-01-01 00:00:01' UTC から '2038-01-19 03:14:07' UTC です。

データが格納される前に、書き込まれた時刻データは、データベースソフトウェアのタイムゾーン設定 (デフォルトはシステムタイムゾーン) に基づいて UTC に変換されます。したがって、Hologres の TIMESTAMPTZ 型にマッピングします。

MaxCompute

DATETIME

2021-11-29 00:01:00

TIMESTAMPTZ

2021-11-29 00:01:00.000+08

MaxCompute の DATETIME 型は、デフォルトで UTC 時刻です。値の範囲は '0000-1-1' から '9999-12-31' で、ミリ秒の精度です。したがって、Hologres の TIMESTAMPTZ 型にマッピングします。

TIMESTAMP

2021-01-11 00:00:00.123456789

TIMESTAMPTZ

2021-01-11 00:00:00.123+08

MaxCompute の TIMESTAMP 型は、デフォルトで UTC 時刻です。値の範囲は '0000-01-01 00:00:00.000000000' から '9999-12-31 23.59:59.999999999' で、ナノ秒の精度です。したがって、Hologres の TIMESTAMPTZ 型にマッピングします。

説明

注意:Hologres は基盤となるレイヤーでナノ秒をミリ秒に変換するため、精度の問題を心配する必要はありません。

Flink

TIMESTAMP

2007-04-30 13:10:02.047

TIMESTAMPTZ

2007-04-30 13:10:02.047+08

Flink の TIMESTAMP 型は、デフォルトでミリ秒精度の UTC 時刻です。したがって、Hologres の TIMESTAMPTZ 型にマッピングします。

DataHub

TIMESTAMP

2020-03-05 10:10:00.123456+08

TIMESTAMPTZ

2020-03-05 10:10:00.123+08

DataHub の TIMESTAMP 型はマイクロ秒の精度で、UTC 時刻を使用します。Hologres コネクタは、書き込みプロセス中にデータのタイムゾーンを自動的にゼロタイムゾーンに変換します。したがって、Hologres の TIMESTAMPTZ 型にマッピングします。

FAQ

  • DataHub から Hologres にリアルタイムでデータを同期すると、Hologres の時刻が実際の時刻より 8 時間遅れます。DataHub と Hologres の両方でフィールドタイプは TIMESTAMP です。

    • 原因:Hologres コネクタは、書き込みプロセス中にデータのタイムゾーンを自動的にゼロタイムゾーンに変換します。Hologres のフィールドが TIMESTAMP に設定されている場合、タイムゾーン情報は含まれません。データはゼロタイムゾーンで書き込まれるため、8 時間遅れます。

    • 解決策:テーブルを再作成し、Hologres のフィールドタイプを TIMESTAMPTZ に変更します。

  • DataHub から Hologres にリアルタイムでデータを同期すると、Tableau で表示される時刻が Hologres の時刻と 8 時間異なります。Hologres のフィールドタイプは TIMESTAMPTZ です。

    • 原因:これは Tableau フロントエンドでのタイムゾーン表示の問題です。

    • 解決策:HoloWeb は UTC+08 をデフォルトのタイムゾーンとして使用します。HoloWeb でデータの正確性を確認できます。その後、Tableau で接続を確立する際に、[Initial SQL] フィールドで次のコマンドを使用してタイムゾーンを調整できます。

      --UTC+8 タイムゾーンで時刻を表示します。
      set timezone to 'Asia/Shanghai';
  • MySQL から Hologres にデータを同期した後、時刻表示に +08 が表示されるのはなぜですか?

    • 原因:+08 は、現在のクライアントが UTC+8 タイムゾーンで時刻を表示していることを示します。格納されたデータ自体が UTC+8 タイムゾーンであることを意味するわけではありません。

    • 解決策:クライアントのタイムゾーンを目的のタイムゾーンに変更します。

  • Java Database Connectivity (JDBC) でタイムゾーンを設定するにはどうすればよいですか?

    JDBC で表示されるタイムゾーンは、デフォルトで Java 仮想マシン (JVM) のタイムゾーンになります。JDBC でのタイムゾーン表示を変更するには、JDBC に接続し、次の SQL 文を実行します。

    --UTC+7 タイムゾーンに変更します。
    set timezone = '+07';