Я использую PreparedStatement с Timestamp в where 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.
Параметр - это отметка времени, и я ожидал, что на пути не будет сделано никаких преобразований времени. Тип столбца базы данных - DATE, но я также проверил его с типом столбца TIMESTAMP с теми же результатами.
Есть ли способ добиться правильного результата? Я не могу изменить часовой пояс по умолчанию для всего приложения в формате UTC.
Спасибо за помощь