2015-12-03 72 views
0

Я создаю проект в JDeveloper на основе EJB. У меня есть функция, которая вставляет дату в базу данных Oracle, поэтому я хочу проверить ее, если она работает правильно. У меня есть метод испытания со следующим утверждением в нем:Ошибка инициализации java.sql.Date

java.sql.Date sDate = new java.sql.Date(System.currentTimeMillis()); 

В режиме отладки, я иду к переменной и увидеть, что значение CDate равно нулю, в то время как поле fasttime заполняется числом типа длинный (144 ...). [enter image description here]

Мне интересно, почему существует несоответствие. Это ошибка, или я допустил ошибку? Разве дата не указана с текущей датой и временем?

Любые идеи?

+1

Поделитесь некоторым кодом, связанным с вашей вставкой в ​​БД - заявление, которое вы указали, даже не включает cDate – Jan

+1

sDate или cdate? – QuakeCore

+0

sDate -> cdate = null, fastTime = 14 ..... (см. Изображение в сообщении) –

ответ

0

Из documentation

общественного класса Date расширяет датировать тонкую оболочку вокруг значения миллисекунды, что позволяет JDBC, чтобы определить это как значение SQL DATE. Значение миллисекунд представляет собой количество миллисекунд, которые имеют , прошедшие с 1 января 1970 года 00: 00: 00.000 GMT.

Для того, чтобы соответствовать определению SQL DATE, значение миллисекунды обернутого экземпляром java.sql.Date должно быть «нормализовано», установив часы, минуты, секунду и миллисекунду до нуля в конкретный момент времени зону, с которой связан экземпляр.

+0

Хотели бы вы привести пример? –

Смежные вопросы