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