我在 PostgreSQL 中创建了一个时区,如下所示:
ALTER DATABASE mydatabase SET TimeZone = 'MST';
我也想在恢复的数据库中使用预设的时区。如果我通过备份它并使用它pg_dump
恢复设置回本地时间。pg_restore
pg_settings/TimeZone
如何转移时区?
我在 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 中。
对于带时区的时间戳,内部存储的值始终为 UTC
现在回到你的问题。的确:
z-# \! pg_dump -d z | grep "TimeZone"
如果您备份数据库z,则不会导出其设置。所以你需要使用pg_dumpall
:
z-# \! pg_dumpall | grep "TimeZone"
ALTER DATABASE z SET "TimeZone" TO 'UTC+2';