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
이됩니다. 이것은 버그입니까, 예상되는 동작입니까?
좀 더 조사 후 편집
는 로컬 시간대하지만 TIMESTAMP WITH TIME ZONE
의 오프셋 UTC 오프셋 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
이라고합니다.