如何将时区信息保持完整,提取到Java8 java.time.OffsetTime
和java.time.OffsetDateTime
对象,具有SQL类型TIME_WITH_TIME_ZONE
/ TIMESTAMP_WITH_TIME_ZONE
的数据库值? 即,如果数据库的时间区域为+03:00
或-05:00
,我希望OffsetTime
和{{{{}}}保留时区特异性我从数据库值创建的对象。
在我的特定情况下,时间和时间戳值来自MS SQLServer,但我不认为应该重要... [编辑:看起来MS SQLServer只有{{ 1}}这是时区感知,无需支持OffsetDataTime
。]
答案 0 :(得分:3)
这应该可以使用getObject()的第二个参数,虽然我没有得到MS SQLServer实例来测试它...
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery("SELECT * FROM mytable WHERE columnfoo = 500");
while (rs.next()) {
System.out.print("Column 1 returned ");
OffsetDateTime localDate = rs.getObject(1, OffsetDateTime.class);
System.out.println(localDate);
}
rs.close();
st.close();
请注意,这仅适用于数据库的4.2及更高版本的JDBC驱动程序,这些驱动程序支持Java 8 ...请参阅release note for 4.2