Postgresql时区设置,系统主机与数据库时间不一致,导致数据自动生成的时间错误

忽然发现程序数据生成时间和服务器时间对不上?

排查发现:操作系统的时间与数据库的时间也不一致,究其原因是 两者时区不一致造成的!首先需要查改服务器时区和时间,然后查改数据库时区(数据库需求修改配置,否则重启后失效还原成了默认值)

1、查看系统时间与时区
[postgres@ubuntu]$ date
Thu Nov 19 09:39:58 CST 2015

[postgres@ubuntu]$ date -R
Thu, 19 Nov 2015 09:40:33 +0800

[postgres@ubuntu]$ cat /etc/sysconfig/clock
ZONE="Asia/Shanghai"
 
 
2、查看pg的时区与时间
postgres=# select now();
              now              
-------------------------------
 2015-11-18 17:42:28.755732-08
(1 row)
--查看时区
postgres=# show time zone;
  TimeZone  
------------
 US/Pacific
--以上可知,主机的时区和系统的时区不一致,造成两者相差16个小时 
 
 
 --修改时区,注意此默认为session级别(重启后会失效)
 postgres=# set time zone 'PRC';
SET
postgres=# select now();
              now              
-------------------------------
 2015-11-19 09:44:50.178039+08
(1 row)
 
postgres=# show time zone;
 TimeZone 
----------
 PRC
 
 --视图pg_timezone_names保存了所有可供选择的时区
 select * from pg_timezone_names;
 


--查看配置文件中时区设置,要想永久生效,此时需要修改配置文件 
[postgres@ubuntu]$ grep timezone postgresql.conf 
log_timezone = 'PRC'
timezone = 'PRC'
 
 
--修改完配置时重新加载
[postgres@ubuntu ~]$ pg_ctl reload
server signaled
[postgres@ubuntu ~]$ psql
postgres=# show time zone;     
 TimeZone 
----------
 PRC

你可能感兴趣的:(数据库,postgresql)