MySQL中的`serverTimezone`参数是否会更改@@ session.time_zone?

时间:2018-07-05 16:22:02

标签: java mysql jdbc timezone

如果我使用连接URL中的serverTimezone=UTC与MySQL建立连接,这是否会更改与MySQL的连接@@session.time_zone的变量?还是通过发布@@session.time_zone语句更改SET time_zone...的唯一方法?我被认为是serverTimezone=UTCuseLegacyDateTimeCode=false的组合将把@@session.time_zone设置为UTC(或我作为serverTimezone的参数传递的任何时区),但是对此进行了测试MySQL Connector / J的行为似乎表明事实并非如此。

2 个答案:

答案 0 :(得分:0)

正如我在评论中所说,我面临着同样的问题-需要找到一种方法,而不是通过配置JDBC驱动程序来执行无SQL语句的@@session.time_zone = '+0:00'

如果您使用属性(Dropwizard甚至是Spring),这是解决方案:

sessionTimeZone: UTC
useLegacyDatetimeCode: false

或仅将其附加到JDBC连接URL:?sessionTimeZone=UTC&useLegacyDatetimeCode=false

连接器的documentation根本没有提到它(这可能就是为什么有这么多答案指向“ serverTimezone”和其他答案的原因。

答案 1 :(得分:-1)

如果您希望将MySQL配置为UTC:

SET @@global.time_zone = '+00:00';

因此,每次自动更新日期时间以及每次连接到数据库时,@@ session.time_zone都将设置为@@ global.time_zone。

可能需要重新启动和重新连接数据库。

如果您只是对会话时区的修改感兴趣:

SET @@session.time_zone = '+00:00';

您需要在每次连接后执行此操作。