使用postgresql,保存时使用的current_timestamp保存当前时间,但发现保存到数据库与实际时间差8小时,
查看服务器时间是正常的,经查询是因为时区设置问题,所以需要修改数据库时区配置
如果只是在数据库连接工具里修改,这个是session级别,重启数据库后执行程序,发现没有修复,改成数据库级别
时间得到修复,修改配置文件,可以全部修复,修改后需要重启数据库,可使用pg_ctl reload -D [数据保存路径]
//查看时区
postgres=# show timezone;
TimeZone
PRC
(1 row)
修改pg时区
//视图pg_timezone_names保存了所有可供选择的时区
postgres=# select * from pg_timezone_names;
session级配置
//修改时区,注意此默认为session级别
postgres=# set time zone ‘PRC’;
SET
用户级配置
alter role rolname set timezone=‘UTC’;
或者
alter role all set timezone=‘UTC’;
数据库级配置
alter database dbname set timezone=‘UTC’;
全局配置(永久生效)
//查看配置文件中时区设置,要想永久生效,此时需要修改配置文件
[root@localhost ~]$ grep timezone postgresql.conf
log_timezone = ‘US/Pacific’
timezone = ‘US/Pacific’
//修改完配置时重新加载,reload后面可能需要增加-D参数指定数据路径和-C指定配置文件
[root@localhost ~]$ pg_ctl reload
server signaled