現在の設定がビジネス要件を満たしていない場合や、アプリケーションが複数のタイムゾーンにまたがるデータを扱う場合は、ApsaraDB RDS for PostgreSQL インスタンスのタイムゾーンを変更します。これにより、データが異なるタイムゾーン間で正しく変換および表示されるようになります。
前提条件
クラウドディスクを使用する ApsaraDB RDS for PostgreSQL インスタンスが必要です。
注意事項
-
SET timezoneステートメントは現在のセッションにのみ適用され、永続的ではありません。変更を永続化するには、「インスタンスパラメーターの設定」の説明に従ってパラメーターを変更してください。 -
特定のデータベースにタイムゾーンを設定するには、次のステートメントを実行します:
ALTER DATABASE <database_name> SET timezone TO '<time_zone_name>';。説明データベースのタイムゾーンをシステムのデフォルトにリセットするには、次のステートメントを実行します:
ALTER DATABASE <database_name> SET timezone TO DEFAULT;。 -
PostgreSQL がサポートするタイムスタンプ格納用のデータ型は、[TIMESTAMP] と [TIMESTAMPTZ] の 2 つです。ビジネス要件に基づいて適切なデータ型を選択してください:
-
TIMESTAMP:このデータ型は、日付と時刻の値を UTC で格納しますが、タイムゾーン情報は格納しません。このトピックで説明されているようにタイムゾーンを変更した場合でも、このデータ型のクエリ結果は変更されません。
-
TIMESTAMPTZ: このデータ型はタイムゾーンに対応しています。 タイムスタンプを格納する際、PostgreSQL はそれを UTC に変換して格納します。 データを取得する際、PostgreSQL はそれを UTC からインスタンスまたはセッションに設定されているタイムゾーンに変換します。 このトピックで説明されているようにタイムゾーンを変更した場合、このデータ型のクエリ結果は新しいタイムゾーンを自動的に反映します。
-
タイムゾーンの変更
クラウドディスクを使用する ApsaraDB RDS for PostgreSQL インスタンスでは、コンソールのパラメーターの設定ページに移動して timezone パラメーターを変更します。詳細な手順については、「インスタンスのパラメーターを設定する」をご参照ください。
timezone パラメーターのデフォルト値は Asia/Shanghai です。このパラメーターを変更しても、インスタンスの再起動は必要ありません。
Premium Local SSD を使用する ApsaraDB RDS for PostgreSQL インスタンスは、[timezone] パラメーターをサポートしていません。
サポートされているタイムゾーンの表示
サポートされているすべてのタイムゾーンを表示するには、次のコマンドを実行してください:
SELECT name,utc_offset FROM pg_timezone_names;
pg_timezone_names テーブルの詳細については、「pg_timezone_names」をご参照ください。
関連ドキュメント
-
インスタンスの作成時にタイムゾーンパラメーターを設定しない場合、システムはリージョンに基づいてデフォルトのタイムゾーンを割り当てます。リージョンとそれに対応するデフォルトのタイムゾーン名のリストについては、「ApsaraDB RDS for PostgreSQL インスタンスのリージョン別デフォルトタイムゾーン名」をご参照ください。
-
ApsaraDB RDS for PostgreSQL は、タイムゾーン名のみをサポートし、UTC オフセットはサポートしていません。一般的に使用されるタイムゾーン名のリストについては、「ApsaraDB RDS for PostgreSQL インスタンスの一般的なタイムゾーン名リスト」をご参照ください。
-
API 操作を使用してタイムゾーン パラメーターを変更することもできます。
API
説明
インスタンスパラメーターを変更します