javax.sql. Изменение поведения времени с ojdbc14 на ojdbc6
Мы просто переключились с ojdbc14 на ojdbc6 и заметили, что когда мы вставляем значение javax.sql.Time в столбец Oracle через подготовленный оператор и preparedStatement.setTime(1, new javax.sql.Time(new Date().getTime()))
, его поведение изменилось. Раньше он вставлял в таблицу информацию как о дате, так и о времени, но с новым драйвером оказалось, что захватывается только часть времени, а значения, которые мы видим в базе данных, датированы 1 января 1970 года.
Теперь, совершенно очевидно, что это так, мой вопрос, где я могу найти официальный документ или заметку об изменении, описывающую это поведение.
Спасибо
1 ответ
По моему мнению, лучше будет передать вам значения в виде объектов даты / времени, таких как java.sql.Timestamp
и читая их как таковые. Так что вы бы использовать public void setTimestamp(int parameterIndex, Timestamp x)
установить соответствующие значения. Это намного чище в использовании.
Затем вы можете использовать Java SimpleDateFormat для форматирования данных по своему вкусу после того, как вы прочитали их из базы данных.
Однако есть несколько задокументированных ошибок с использованием метки времени, которые вы можете найти в этой документации Oracle JDBC Driver. Они могут не иметь прямого отношения к вам, но посмотрите на следующие: #BUG-6749320, #6870832, #7028625, #6441084
Вы можете прочитать об изменениях здесь: "Что происходит с DATE и TIMESTAMP?" в разделе часто задаваемых вопросов по Oracle JDBC.