我在PostgreSQL中创建了一个时区,如下所示:
ALTER DATABASE mydatabase SET TimeZone = 'MST';
我也想在还原的数据库中使用预设时区。如果我通过pg_dump
备份它并使用pg_restore
还原,则pg_settings/TimeZone
将设置回本地时间。
如何转移时区?
示例:
t=# create database z;
CREATE DATABASE
t=# alter database z set timezone to 'UTC+2';
ALTER DATABASE
t=# select now();
now
------------------------------
2018-01-17 08:41:10.12834+00
(1 row)
t=# c z
You are now connected to database "z" as user "postgres".
z=# select now();
now
-------------------------------
2018-01-17 06:41:15.588483-02
(1 row)
正如您在连接到数据库后所看到的z
客户端"默认"TimeZone
更改。但是您不应该认为数据库中的日期发生了变化 - 不。所有时区感知时间戳都以 UTC 格式保存。
对于时区时间戳,内部存储的值始终位于 世界协调时
现在回到你的问题。事实上:
z-# ! pg_dump -d z | grep "TimeZone"
如果备份数据库 Z,则不会导出其设置。所以你需要使用pg_dumpall
:
z-# ! pg_dumpall | grep "TimeZone"
ALTER DATABASE z SET "TimeZone" TO 'UTC+2';