ApsaraDB RDS for PostgreSQL インスタンスのタイムゾーンがビジネスロジックと一致しない場合、またはアプリケーションが複数のタイムゾーンのデータを処理する必要がある場合は、RDS インスタンスのタイムゾーンを変更できます。 これにより、データが異なるタイムゾーンで正しく変換および表示されるようになります。
前提条件
RDS インスタンスでクラウドディスクを使用していること。
注意事項
SET timezone
文は、現在のセッションに対してのみ有効です。 変更を永続的に有効にする場合は、「インスタンスパラメーターを変更する」の説明に基づいてタイムゾーンを変更することをお勧めします。データベースにタイムゾーンを指定するには、
ALTER DATABASE <データベース名> SET timezone TO '<タイムゾーン名>';
文を実行します。説明データベースのタイムゾーンをデフォルトのタイムゾーンに戻すには、
ALTER DATABASE <データベース名> SET timezone TO DEFAULT;
文を実行します。PostgreSQL は、タイムスタンプに TIMESTAMP と TIMESTAMPTZ の 2 つのデータ型をサポートしています。ビジネス要件に基づいてデータ型を選択することをお勧めします。
TIMESTAMP: 日付と時刻の値を UTC で格納しますが、タイムゾーンデータは格納しません。 このトピックに基づいてタイムゾーンを変更した場合、この型の値のクエリ結果は変更されません。
TIMESTAMPTZ: タイムゾーン対応の日付と時刻の値を格納します。 TIMESTAMPTZ 型の値を挿入すると、システムは値を UTC 値に変換し、UTC 値をテーブルに格納します。 RDS インスタンスから値を照会すると、システムは値をインスタンスまたはデータベースに設定されたタイムゾーンで指定された時刻に変換します。 このトピックに基づいてタイムゾーンを変更した場合、この型の値のクエリ結果は、新しいタイムゾーンに基づいて変化します。
タイムゾーンを変更する
クラウドディスクを使用する RDS インスタンスのタイムゾーンのみを変更できます。 タイムゾーンを変更するには、ApsaraDB RDS コンソールにログインし、[パラメーター] ページで timezone パラメーターを変更します。 詳細については、「インスタンスパラメーターを変更する」をご参照ください。
RDS インスタンスで Premium ローカル SSD を使用している場合、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 インスタンスでサポートされているタイムゾーンの略語とタイムゾーンのマッピング」をご参照ください。
API 操作を呼び出して、timezone パラメーターを変更することもできます。
操作
説明
インスタンスのパラメーターを変更します。