java - JDBC 时间戳和日期 GMT 问题

标签 java sql jdbc gmt

我有一个 JDBC 日期列,如果我使用 getDate,它只会获取 'date' 部分 2009 年 10 月 2 日,但如果我使用 getTimestamp,我会得到完整的 ' 日期' 2009 年 10 月 2 日 13:56:78:890。这正是我想要的。

然而,getTimestamp 返回的“日期”会“忽略”GMT 值,假设日期; 2009 年 10 月 2 日 13:56:78:890,我最终得到 2009 年 10 月 2 日 15:56:78:890

我的日期在数据库中保存为 +2GMT 日期,但应用程序服务器是 GMT,即晚 2 小时

如何仍然按原样获取我的日期,2009 年 10 月 2 日 13:56:78:890

编辑

我在 GMT +2 的客户端获得日期 +2

最佳答案

这就是 Timestamp 和 MySQL 中其他时态类型的区别。时间戳在 UTC 中保存为 Unix time_t,但其他类型按字面意思存储日期/时间,没有区域信息。

当您调用 getTimestamp() 时,如果类型是时间戳,MySQL JDBC 驱动程序会将时间从 GMT 转换为默认时区。它不对其他类型执行此类转换。

您可以更改列类型或自己进行转换。我推荐以前的方法。

关于java - JDBC 时间戳和日期 GMT 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1508985/

相关文章:

java - 随时取消从另一个线程下载文件

java - 是否可以有多个内部联接,其中的 where 子句仅影响其中一个联接?

java - 如何将 Java 结果集转换为 Railo 中的 ColdFusion 查询?

java - com.vaadin.ui.DateField - 切换只读后时间部分不可编辑

java - 保存随机数组以在整个应用程序中使用

java - 在面板内绘制图像

sql - 获取雪花数据仓库中插入的行的标识

MySQL 嵌套联合替代方案

java - 将 jtextbox 值和 jradiobutton 值插入数据库

java - 我想使用连接池,但我的 java 应用程序不是 servlet