ApsaraDB RDS for PostgreSQLインスタンスのタイムゾーンがビジネスロジックと一致しない場合、またはアプリケーションが複数のタイムゾーンのデータを処理する必要がある場合は、RDSインスタンスのタイムゾーンを変更できます。 これにより、データが正しく変換され、異なるタイムゾーンに表示されます。
前提条件
RDSインスタンスはクラウドディスクを使用しています。
使用上の注意
SET timezone
ステートメントは、現在のセッションに対してのみ有効です。 変更を完全に有効にする場合は、[インスタンスパラメーターの変更] の説明に基づいてタイムゾーンを変更することを推奨します。データベースのタイムゾーンを指定する場合は、
ALTER database <Name of the DATABASE> SET timezone to '<Name of the time zone>';
ステートメントを実行します。説明データベースのタイムゾーンをデフォルトのタイムゾーンに復元する場合は、
ALTER database <Name of the DATABASE> SET timezone to default;
ステートメントを実行します。PostgreSQLは、タイムスタンプにTIMESTAMPとTIMESTAMPTZの2つのデータ型をサポートしています。 ビジネス要件に基づいてデータ型を選択することを推奨します。
TIMESTAMP: 日付と時刻の組み合わせ値をUTCに格納しますが、タイムゾーンデータは格納しません。 このトピックに基づいてタイムゾーンを変更した場合、このタイプの値のクエリ結果は変更されません。
TIMESTAMPTZ: タイムゾーン対応の日付と時刻の組み合わせ値を格納します。 TIMESTAMPTZ型の値を挿入すると、システムは値をUTC値に変換し、UTC値をテーブルに格納します。 RDSインスタンスから値をクエリすると、システムは値をインスタンスまたはデータベースの設定されたタイムゾーンで指定された時間に変換します。 このトピックに基づいてタイムゾーンを変更すると、このタイプの値のクエリ結果は新しいタイムゾーンによって異なります。
タイムゾーンの変更
クラウドディスクを使用するRDSインスタンスのタイムゾーンのみを変更できます。 タイムゾーンを変更するには、ApsaraDB RDSコンソールにログインし、[パラメーター] ページでtimezoneパラメーターを変更します。 詳細は、「インスタンスパラメーターの変更」をご参照ください。
RDSインスタンスがローカルディスクを使用している場合、timezoneパラメーターはサポートされていません。
サポートされているタイムゾーンの照会
次のステートメントを実行して、サポートされているタイムゾーンを照会できます。
SELECT name,utc_offset FROM pg_timezone_names;
pg_timezone_namesテーブルの詳細については、「pg_timezone_names」をご参照ください。
参考資料
RDSインスタンスの作成時にタイムゾーンを指定しない場合、システムはRDSインスタンスに指定したリージョンのデフォルトのタイムゾーンを割り当てます。 詳細については、「ApsaraDB RDS For PostgreSQLインスタンスのデフォルトのタイムゾーン」をご参照ください。
ApsaraDB RDS for PostgreSQLでは、タイムゾーン名のみを設定できます。 UTCオフセットで表されるタイムゾーンはサポートされません。 詳細については、「ApsaraDB RDS For MySQLインスタンスおよびApsaraDB RDS for PostgreSQLインスタンスの共通タイムゾーン」をご参照ください。
APIを呼び出してtimezoneパラメーターを変更することもできます。
API 操作
説明
インスタンスのパラメーターを変更します。