spring配置文件中数据库配置serverTimeZone设置的作用

6 篇文章 0 订阅
4 篇文章 0 订阅

serverTimeZone设置的作用:就是告诉web应用,数据库服务的时区是什么。
如果不在application配置文件中设置serverTimeZone的话,那么会在第一次连接数据库的时候,获取数据库设置的serverTimeZone,如果数据库没有设置serverTimeZone则数据库会报错

1.创建数据库连接时

jdbc会先尝试和数据库创建链接,创建链接之后,数据库会返回数据库的system_time_zone和time_zone设置,然后去取jdbc url中的serverTimezone配置,如果该配置不为空,则会优先将url中的serverTimezone设置为当前数据库连接会话的数据库时区。

2.对Date类型的数据进行操作时

jdbc会根据serverTimeZone自动将时间转换成数据库端的时间后放入到数据库中,取的时候会根据serverTimeZone自动将数据库中的时间转换成jdbc客户端的时间
例子:

jdbc客户端所在时区:UTC+8时区
serverTimeZone:UTC+0时区
1.这时候在代码中(jdbc客户端)插入一个10:00的时间到数据库,jdbc会根据serverTimeZone=UTC+0,比jdbc客户端慢8个小时,所以插入到数据库的时间是10:00-8:00=2:00

注意:以上的设置都只是针对Date类型的数据的分析,由于JDK8新增了LocalDateTime类型的数据,serverTimeZone对LocalDateTime类型的数据分析见另一篇 记一次JAVA问题排查:查询出来的LocalDateTime类型时间不受serverTimezone影响

参考引用:https://www.jb51.net/article/187086.htm
https://blog.csdn.net/qq_38340601/article/details/104722575

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值