Java jdbcsql时区

Java jdbcsql时区,java,mysql,spring,jdbc,spring-jdbc,Java,Mysql,Spring,Jdbc,Spring Jdbc,我将Spring与ApacheCommonsBasicDatasource一起使用 时区通过以下方式显示为GMT: SELECT @@global.time_zone, @@session.time_zone; 我的输入是在大纪元时间138683142000和138683220000中,因此查询应该是这样的: SELECT * FROM table WHERE AND arrival_time BETWEEN '2013-12-12 06:57:00' AND '2013-12-12 07:2

我将Spring与ApacheCommonsBasicDatasource一起使用

时区通过以下方式显示为GMT:

SELECT @@global.time_zone, @@session.time_zone;
我的输入是在大纪元时间138683142000和138683220000中,因此查询应该是这样的:

SELECT * FROM table WHERE AND arrival_time BETWEEN '2013-12-12 06:57:00' AND '2013-12-12 07:27:00';
我启用了SQL profiing,这是实际执行的查询,因此我没有得到正确的结果:

SELECT * FROM table WHERE AND arrival_time BETWEEN '2013-12-12 01:57:00' AND '2013-12-12 02:27:00';
请注意,由于我是EST-5,时间缩短了5小时,时间应该是GMT

我的问题是:我如何告诉MySQL或Spring JDBC不要使用客户端时区,而只是始终使用GMT?


请说明我是否可以添加任何细节来解决此问题。

尝试使用
to_date
将日期字符串显式转换为日期类型(或特定于实现的日期转换函数)


上面的示例在Oracle SQL中,但将日期字符串显式转换为日期类型的原则在整个SQL实现中都很常见。

听起来JDBC驱动程序没有正确检测Mysql的时区设置。您可能需要在连接字符串中指定服务器的时区。尝试添加

serverTimezone=UTC&useTimezone=true

连接到连接字符串。有关更多信息,请参阅JDBC文档中的

Java客户端的时区是什么?Java客户端在EST中。需要一个JDBC驱动程序来默认本地时区,请参阅我对这个问题的回答:我已经将日期作为Java日历,而不是字符串。它们有正确的时间和时区。
serverTimezone=UTC&useTimezone=true