2017-05-07 16 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の値の代わりに、期待値の2時間前の1960-01-01T21:03:20+02:00が得られます。これはバグか期待される動作ですか? UTCは、ローカルタイムゾーンのオフセットが、TIMESTAMP WITH TIME ZONEのUTCオフセットが差し引かれますないと思われるいくつかのより多くの調査の後

編集

'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'は5時間オフですが、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でコンパイルすることができます。

関連する問題