我正在使用HSQLDB 2.4.0,並且看到意外的TIMESTAMP WITH TIME ZONE
值被返回。從HSQLDB中TIMESTAMP WITH TIME ZONE值中減去UTC偏移量
我正在與UTC + 2
try (Connection connection = this.dataSource.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement(
"SELECT '1960-01-01 23:03:20+02:00' "
+ "FROM (VALUES(0))");
ResultSet resultSet = preparedStatement.executeQuery()) {
OffsetDateTime expected = OffsetDateTime.parse("1960-01-01T23:03:20+02:00");
while (resultSet.next()) {
assertEquals(expected, resultSet.getObject(1, OffsetDateTime.class));
assertEquals("1960-01-01 23:03:20+02:00", resultSet.getObject(1, String.class));
}
}
第二斷言成功,但第一個失敗的JVM時區下面的代碼。而不是預期的1960-01-01T23:03:20+02:00
價值,我得到1960-01-01T21:03:20+02:00
這是預期值的兩個小時前。這是一個錯誤還是預期的行爲?
編輯
經過一番深入調查似乎不是UTC本地時區,但UTC的TIMESTAMP WITH TIME ZONE
偏移的偏移被減去。
如果我將'1960-01-01 23:03:20+02:00'
更改爲CAST('1960-01-01 23:03:20+02:00' AS TIMESTAMP WITH TIME ZONE) + INTERVAL '2:00' HOUR TO MINUTE
我得到1960-01-01T21:03:20+02:00
。同樣'1960-01-01 23:03:20+05:00'
是五個小時,但CAST('1960-01-01 23:03:20+02:00' AS TIMESTAMP WITH TIME ZONE) + INTERVAL '5:00' HOUR TO MINUTE
給我1960-01-01T21:03:20+05:00
。