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

questionAnswers(1)

yourAnswerToTheQuestion