2017-05-07 70 views
2

我正在使用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

回答

2

這看起來像是爲下一個版本修復的錯誤。你可以檢出SVN/base/trunk代碼並用Gradle或Ant編譯。

相關問題