我有一个 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/