如果RDS PostgreSQL實例的時區設置與業務邏輯需要的時區不一致,或者應用程序需要處理多個時區的數據,則需要修改數據庫實例的時區配置,以確保數據在不同時區之間的轉換和展示正確無誤。
前提條件
RDS PostgreSQL云盤版實例。
注意事項
SET timezone
語句僅當前會話生效,無法持久化,建議通過設置實例參數功能進行修改。如果您需要為某個數據庫單獨設置時區,請使用
ALTER DATABASE <數據庫名稱> SET timezone TO '<時區名>';
語句進行修改。說明如果需要恢復某個數據庫至系統默認時區,請使用
ALTER DATABASE <數據庫名稱> SET timezone TO DEFAULT;
語句恢復默認。PostgreSQL支持TIMESTAMP和TIMESTAMPTZ兩種存儲時間戳的數據類型,請您根據實際業務需求,選擇不同數據類型:
TIMESTAMP:該數據類型會以UTC時間存儲日期和時間,不會存儲時區信息。如果您參考本文檔修改時區后,該類型的查詢結果不會變化。
TIMESTAMPTZ:該數據類型會存儲日期、時間以及時區信息。當存儲時間數據時,會將時間轉換為UTC時間存儲到表中,當查詢時間數據時,會將UTC時間轉換為當前實例或數據庫所設置的時區對應的時間。如果您參考本文檔修改時區后,該類型的查詢結果會根據時區變化而自動變化。
修改時區
RDS PostgreSQL云盤版實例支持修改配置文件中的時區設置,您可以在控制臺的參數設置頁面修改參數timezone。操作詳情請參見設置實例參數。
RDS PostgreSQL本地盤實例暫不支持timezone參數。
查看支持的時區
您可以使用如下命令查看支持的時區:
SELECT name,utc_offset FROM pg_timezone_names;
關于pg_timezone_names表的更多信息,請參見pg_timezone_names。
相關文檔
如果購買實例時,如果不配置時區參數,系統將根據您購買實例的地域,選擇默認時區。地域與默認命名時區的對應關系,請參見RDS PostgreSQL實例地域與默認命名時區對應關系。
RDS PostgreSQL只支持命名時區,不支持UTC時區。命名時區的詳細信息,請參見RDS PostgreSQL實例的常用命名時區清單。
您還可以通過API修改參數timezone。
API
描述
修改實例參數