我在使用PreparedStatement的與時間戳條款:PreparedStatement和的setTimestamp在Oracle JDBC
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"));
結果我得到的是不同的,當我在客戶端計算機上不同的時區。這是Oracle jdbc中的一個錯誤嗎?或正確的行爲?
Oracle數據庫版本是10.2,我已經嘗試使用oracle jdbc瘦驅動程序版本10.2和11.1。
參數是Timestamp,我預計在路上沒有時間轉換。數據庫列類型是DATE,但我也使用TIMESTAMP列類型對其進行了檢查,結果相同。
有沒有辦法實現正確的結果?我無法將整個應用程序中的默認時區更改爲UTC。
感謝您的幫助
請編輯您的問題並添加t_begin和t_end的類型。 – 2010-05-18 14:38:43