PreparedStatement y setTimestamp en oracle jdbc

Estoy usando PreparedStatement con Timestamp en la 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"));

El resultado que obtengo es diferente cuando tengo diferentes zonas horarias en la computadora cliente. ¿Es esto un error en Oracle jdbc? o comportamiento correcto?

La versión de la base de datos de Oracle es la 10.2 y lo he intentado con la versión 10.2 y 11.1 de Oracle thin driver jdbc.

El parámetro es Timestamp, y esperaba que no se hicieran conversiones de tiempo en el camino. El tipo de columna de la base de datos es DATE, pero también lo verifiqué con el tipo de columna TIMESTAMP con los mismos resultados.

¿Hay alguna manera de lograr el resultado correcto? No puedo cambiar la zona horaria predeterminada en toda la aplicación a UTC.

Gracias por tu ayuda

Respuestas a la pregunta(1)

Su respuesta a la pregunta