Sto usando PreparedStatement con data e ora in cui la clausola:PreparedStatement e setTimestamp in JDBC Oracle
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"));
Il risultato che ottengo è diverso, quando ho fusi orari diversi sul computer client. Si tratta di un bug in Oracle jdbc? o comportamento corretto?
La versione del database Oracle è 10.2 e ho provato con oracle jdbc thin driver versione 10.2 e 11.1.
Il parametro è Timestamp e mi aspettavo che non si verifichino conversioni di tempo. Il tipo di colonna del database è DATE, ma l'ho anche verificato con il tipo di colonna TIMESTAMP con gli stessi risultati.
C'è un modo per ottenere risultati corretti? Non riesco a modificare il fuso orario predefinito nell'intera applicazione in UTC.
Grazie per il vostro aiuto
Modifica la domanda e aggiungi i tipi di t_begin e t_end. –