Я использую PreparedStatement с меткой времени в предложении 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"));
Результат, который я получаю, отличается, когда у меня разные часовые пояса на клиентском компьютере. Это ошибка в Oracle JDBC? или правильное поведение?
Версия базы данных Oracle - 10.2, и я пробовал использовать тонкий драйвер oracle jdbc версий 10.2 и 11.1.
Параметр Timestamp, и я ожидал, что в пути преобразование времени не будет. Тип столбца базы данных - DATE, но я также проверил его с типом столбца TIMESTAMP с теми же результатами.
Есть ли способ добиться правильного результата? Я не могу изменить часовой пояс по умолчанию во всем приложении на UTC.
Спасибо за вашу помощь