PreparedStatement und setTimestamp in oracle jdbc

Ich verwende PreparedStatement mit Timestamp in der where-Klausel:

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"));

Das Ergebnis ist unterschiedlich, wenn ich auf dem Client-Computer unterschiedliche Zeitzonen habe. Ist das ein Fehler in Oracle JDBC? oder richtiges verhalten?

Oracle-Datenbank-Version ist 10.2 und ich habe mit Oracle JDBC Thin-Treiber-Version 10.2 und 11.1 versucht.

Der Parameter ist Timestamp, und ich habe erwartet, dass unterwegs keine Zeitkonvertierungen durchgeführt werden. Der Spaltentyp der Datenbank ist DATE, aber ich habe ihn auch mit dem Spaltentyp TIMESTAMP überprüft und dabei die gleichen Ergebnisse erzielt.

Gibt es eine Möglichkeit, ein korrektes Ergebnis zu erzielen? Ich kann die Standard-Zeitzone in der gesamten Anwendung nicht in UTC ändern.

Danke für Ihre Hilf

Antworten auf die Frage(2)

Ihre Antwort auf die Frage