Simplificando, selecionando um oráculo
DATE
em um Java Date
é inerentemente problemático. Isso porque eles são fundamentalmente diferentes. Um Oracle DATE
é a combinação de ano, mês, dia, horas, minutos, segundos, sem nenhuma informação de fuso horário, então pode ser qualquer fuso horário, com ou sem horário de verão - o Oracle não sabe, pois essa informação não está incluída no DATE
. Por outro lado, uma Data Java é basicamente o número de milissegundos desde 1/1/1970 00:00:00 UTC.
Quando um Oracle
DATE
entra em um Java Date
, o driver JDBC só pode adivinhar qual fuso horário aplicar. Os resultados são bastante imprevisíveis, especialmente quando os dados no banco de dados usam outro fuso horário que não o usuário.