【发布时间】:2016-10-30 01:14:08
【问题描述】:
我想知道转换是如何工作的。 MySQL 服务器(5.6)将 TIMESTAMP 视为区域调整(并在内部存储在/从 UTC 检索)。它还将 DATETIME 视为没有区域。
在 Java 方面,无论哪种情况,我都建议阅读java.sql.Timestamp。是否存在从 MySQL 的 DATETIME 到 java.sql.Timestamp 的区域类型转换(通过 MySQL-connector 5.1.37 时)(例如应用客户端系统区域)?
最后,我的服务器和客户端只有一个区域,因此我维护了一个特定的 ZoneId(在应用程序代码中)以访问ZonedDateTime。但我想使用ZonedDateTime,来回访问存储为 DATETIME 的数据库。一个简单的转换示例将不胜感激!
【问题讨论】:
-
回答了我自己的问题。您必须使用 Java 8。我的第一条评论一定没有帮助,因为那是对服务器信息的所有客户端解释。我很抱歉。
-
@astrogeek14,我没想到我需要格式化/解析字符串来执行此操作。 ?现在,我有一个来自 MySQL 的 DATETIME 值,我想使用已知的
ZoneId将它放入ZonedDateTime(在一个变量中,我们将调用zid)。 -
你可能不会;我误解了你的问题。继续:是否可以将
ZoneId放入数据库中(大概是长度为 3 的 varchar)? -
@astrogeek14,我不知道它是干什么用的。我的代码中有一个
ZoneId。我知道要转换到哪个区域(我假设是 java.sql.Timestamp)。