| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> postgresql 客户端连接方式差异造成的时间差异 -> 正文阅读 |
|
[大数据]postgresql 客户端连接方式差异造成的时间差异 |
一、现象在连接postgresql数据库时,会使用JDBC和ODBC的两类程序连接,下面会分别列出不同客户端连接后的表现。 在写本篇内容时,是北京时间21点44分。 A.使用JDBC的程序(这里使用DBeaver做演示),通过select now() 可以查看到正确的时间。 B.使用ODBC的程序(这里使用Navicat做演示),通过selec now() 看到的时间确实8小时之前。 C.使用客户端的psql程序,连接至服务端,时间错误。 D.在服务端本地登录,时间错误。 上述过程中,只有使用了JDBC的DBeaver查看到的时间是正确的。其他使用了ODBC连接的客户端,表现的时间都是错误的。 因此可以有两个推测与疑点 1.JDBC与ODBC的连接机制不同。 2.Postgres本身的时区是否异常。 二、Postgresql设置1.查看设置为了避免客户端连接的差异,在服务端通过本地psql连接,进行状态查看。 查看时区
查看配置文件时区,配置文件postgresql.conf 。
可支持的时区 可通过视图 pt_timezone_names查看pg所支持的时区。 2.修改Postgresql时区??????? 会话级???????????????
??????? 用户级
??????? 数据库级
??????? 全局配置修改配置文件postgresql.conf
这里说明了如何从postgres这一层确认与修改时区,如此修改之后,ODBC获取时间正常了,但疑惑并未完全解答,需要进一步分析。 三、PG的JDBC1.PG的时区??????? 在postgres官网,针对客户端连接可以看到这样一段描述。
基本大意是 如果没有显式设置timezone,则服务器将该变量初始化为其系统环境指定的时区。 针对服务端的描述
所有时区的日期和时间都存储在UTC内部。在显示给客户端之前,需要先转换为timezone配置参数指定的时区内的本地时间。 2.JAVA与时区综合前文得出,DBeaver在通过JDBC连接时,一定是使用了某个参数,改变了会话级别的timezone,使得结果与ODBC有所差别。因此,我们强行给jdbc连接增加时区参数。 JAVA代码
执行结果
在jdbc连接串增加?? "?TimeZone=Etc/UTC",执行结果
貌似没有发生变化。 我们再从更底层的JVM尝试一下,在启动参数中增加? "-Duser.timezone=Etc/UTC"
时间已经是8小时之前了,实验成功。当前只是确认了jvm的时区参数生效,那么要继续分析一下,java程序连接pg时,使用了什么样的timezone参数。 ??????? 通过jvisualvm工具,查看进程24300(DBeaver进程),可以看到系统级的用户属性 user.timezone=Asia/Shanghai 。 四、总结明确了JDBC连接pg库ODBC查看时间不同的原因。 对时区与PG、时区与JDBC和jvm有了进一步了解。 五、参考资料World Clock — current time around the world |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 0:58:41- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |