但是通过这种方式设置时区在你退出psql终端后,再次进入此psql中断后就会发现又恢复到原来的时区了,

如果想永久修改,我们需要更改配置文件:

root@sheservice:~# find / -name postgresql.conf
/usr/lib/tmpfiles.d/postgresql.conf
/etc/postgresql/12/main/postgresql.conf

vi /etc/postgresql/12/main/postgresql.conf
修改为

log_timezone = 'Asia/Shanghai'
timezone = 'Asia/Shanghai'

将配置文件的这两个变量的值设置成自己想要的时区(PRC指:People’s Republic of China)
然后重新加载即可:
pg_ctl reload

下边以具体示例解释这两种数据类型的差别,以及他们与数据库链接时区(session对应的时区)和postgresql数据库时区之间的关系。下边例子使用的数据库时区是Etc/UTC (GMT + 0),首先创建表,然后做相应操作: test_db=> CREATE TABLE test_table ( now//查看时区 postgres=# show timezone; TimeZone修改pg时区session级配置用户级配置数据库级配置全局配置(永久生效)//修改完配置时重新加载 [root@localhost ~]$ pg_ctl reload server signaled [root@localhost ~]$ psql postgres=# show t PostgreSQL时区 SQL 标准通过"+"或者"-"是否存在来区分timestamp without time zone和timestamp with time zone文本。因此, TIMESTAMP '2021-03-06 18:02:00' 是一个timestamp without time zone,而 TIMESTAMP '2021-03-06 18:02:00 +08' 是一个timestamp with time zone。 +08:表示 时区与全球统一时间 ... 数据生成时间和服务器时间对不上,操作系统的时间与数据库的时间也不一致,究其原因是 两者时区不一致造成的!首先需要查改服务器时区和时间,然后查改数据库时区(数据库需求修改配置,否则重启后失效还原成了默认值) 文章目录第一次登陆PG查看数据库版本查看所有PG库创建数据库使用数据库删除数据库Table 数据表创建Table查看当前库中所有表查看表结构修改表名删除表引用操作系统文件脚本 \i 第一次登陆PG 像oracle一样, 虽然我们安装数据库的时候使用的是root超级用户, 但是一切的数据库操作都是受用 postgres 这个系统普通用户: su - postgres 查看数据库版本 [postgres@pg01 ~]$ psql --version psql (PostgreSQL) 12.0 查看所有PG库 这点很像myql的结构, 一共有三个数据库 postgres 系统库 剩下的两个 注意:修改Linux系统的时区以后,再安装jvm,jvm默认会使用系统的时区。如果系统时区设置错误,安装jvm后,再修改系统的时区,但jvm的时区仍然不变,除非添加jvm的启动参数:-D user.timezone=GMT+08。