TIMESTAMP WITH TIME ZONE 在 OJDBC6 和 OJDBC8 之间有所不同
TIMESTAMP WITH TIME ZONE vary between OJDBC6 and OJDBC8
我对 OJDBC8 确实有问题。前段时间我决定从 OJDBC6 -> OJDBC8 切换,一些在停止工作之前工作的功能。我有一个带有 GMT-4 和所有其他属性的日历对象。当我使用 OJDBC6 时,下面的代码工作正常,TIMESTAMP 被调整到时区。
rs.getTimestamp(1, calendar)
当使用 OJDBC8 和与上面相同的代码时,时间戳没有调整,基本上时间戳不会改变它与数据库中的值相同。我检查了 OJDBC8 代码,版本 6 和 8 之间的逻辑不同。我不明白为什么我们将日历对象传递给 getTimestamp() 方法,但它甚至没有在 OJDBC8 中使用。
请注意,ojdbc8
的 Java 编译器级别为 Java-8,而 ojdbc6
的编译器级别为 Java-6。随着 Java-8,引入了 a completely new date-time API。遗留的 date-time API (java.util
) 是 error-prone,使用它们的代码曾经很复杂且难以理解。
您应该使用现代 date-time API (java.time
) 并按如下方式进行操作:
OffsetDateTime odt = rs.getObject(1, OffsetDateTime.class);
了解更多有关现代 date-time API 的信息
您为切换到现代 date-time API 所做的更改将是有价值的,并且会在 long-term 中帮助您。
我对 OJDBC8 确实有问题。前段时间我决定从 OJDBC6 -> OJDBC8 切换,一些在停止工作之前工作的功能。我有一个带有 GMT-4 和所有其他属性的日历对象。当我使用 OJDBC6 时,下面的代码工作正常,TIMESTAMP 被调整到时区。
rs.getTimestamp(1, calendar)
当使用 OJDBC8 和与上面相同的代码时,时间戳没有调整,基本上时间戳不会改变它与数据库中的值相同。我检查了 OJDBC8 代码,版本 6 和 8 之间的逻辑不同。我不明白为什么我们将日历对象传递给 getTimestamp() 方法,但它甚至没有在 OJDBC8 中使用。
请注意,ojdbc8
的 Java 编译器级别为 Java-8,而 ojdbc6
的编译器级别为 Java-6。随着 Java-8,引入了 a completely new date-time API。遗留的 date-time API (java.util
) 是 error-prone,使用它们的代码曾经很复杂且难以理解。
您应该使用现代 date-time API (java.time
) 并按如下方式进行操作:
OffsetDateTime odt = rs.getObject(1, OffsetDateTime.class);
了解更多有关现代 date-time API 的信息
您为切换到现代 date-time API 所做的更改将是有价值的,并且会在 long-term 中帮助您。