PreparedStatement e setTimestamp no oracle jdbc
Estou usando PreparedStatement com carimbo de data e hora na cláusula where:
PreparedStatement s=c.prepareStatement("select value,utctimestamp from t where utctimestamp>=? and utctimestamp<?");
s.setTimestamp(1, new Timestamp(1273017600000L)); //2010-05-05 00:00 GMT
s.setTimestamp(2, new Timestamp(1273104000000L)); //2010-05-06 00:00 GMT
ResultSet rs = s.executeQuery();
if(rs.next()) System.out.println(rs.getInt("value"));
O resultado obtido é diferente quando tenho fusos horários diferentes no computador cliente. Isso é um bug no jdbc do Oracle? ou comportamento correto?
A versão do banco de dados Oracle é 10.2 e eu tentei com o driver fino oracle jdbc versão 10.2 e 11.1.
O parâmetro é Timestamp, e eu esperava que nenhuma conversão de tempo fosse feita no caminho. O tipo de coluna do banco de dados é DATE, mas também verifiquei com o tipo de coluna TIMESTAMP com os mesmos resultados.
Existe uma maneira de alcançar o resultado correto? Não posso alterar o fuso horário padrão em todo o aplicativo para UTC.
Obrigado pela ajuda