java - JDBC SQL 时区

标签 java mysql spring jdbc spring-jdbc

我将 Spring 与 apache commons BasicDataSource 结合使用。

时区显示为 GMT:

SELECT @@global.time_zone, @@session.time_zone;

我的输入是纪元时间,1386831420000和1386833220000,所以查询应该是这样的:

SELECT * FROM table WHERE AND arrival_time BETWEEN '2013-12-12 06:57:00' AND '2013-12-12 07:27:00';

我启用了 SQL 分析,这是实际执行的查询,所以我没有得到正确的结果:

SELECT * FROM table WHERE AND arrival_time BETWEEN '2013-12-12 01:57:00' AND '2013-12-12 02:27:00';

请注意,时间相差 5 小时,因为我是 EST-5,时间应该是 GMT。

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

如果我可以添加任何细节来解决问题,请发表评论。

最佳答案

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

SELECT * 
FROM table 
WHERE arrival_time BETWEEN 
TO_DATE('2013-12-12 06:57:00', 'YYYY-MM-DD HH24:MI:SS')
AND 
TO_DATE('2013-12-12 07:27:00', 'YYYY-MM-DD HH24:MI:SS')

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

关于java - JDBC SQL 时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20459214/

相关文章:

java.lang.ClassNotFoundException : org. slf4j.impl.StaticLoggerBinder 我什至没有登录我的依赖项

java - 表之间以什么关系存储投票

java - 如何避免多生产者和消费者的饥饿?

java - 计算字符串中数字出现的次数

php - 使用 PHP 或 MySql 从其他人的结果创建一个新的 MySql 列

phpmyadmin,mysql 数据库父?

mysql - 合并2个不同数据库的表

java - 不知道在 Spring Tool Suite 中创建哪个项目

java - 使用发送重定向到 JSP

java - 这个程序是否以无限循环结束?我怎么知道?