Подтвердить что ты не робот

Преобразование java.sql.Date в java.util.Date

Какой самый простой способ конвертировать объект java.sql.Date в java.util.Date, сохраняя метку времени?

Я пробовал:

java.util.Date newDate = new Date(result.getDate("VALUEDATE").getTime());

не повезло. Он по-прежнему сохраняет только дату в переменной.

4b9b3361

Ответ 1

Класс java.sql.Date предназначен для переноса только даты без времени, поэтому результат преобразования, который вы видите, подходит для этого типа. Вам нужно использовать java.sql.Timestamp, чтобы получить полную дату со временем.

java.util.Date newDate = result.getTimestamp("VALUEDATE");

Ответ 2

Так как java.sql.Date extends java.util.Date, вы должны иметь возможность делать

java.util.Date newDate = result.getDate("VALUEDATE");

Ответ 3

Эта функция вернет преобразованную дату java из объекта даты SQL.

public static java.util.Date convertFromSQLDateToJAVADate(
            java.sql.Date sqlDate) {
        java.util.Date javaDate = null;
        if (sqlDate != null) {
            javaDate = new Date(sqlDate.getTime());
        }
        return javaDate;
    }

Ответ 4

Из чтения исходного кода, если java.sql.Date действительно имеет информацию о времени, вызов getTime() будет возвращать значение, которое включает в себя информацию о времени.

Если это не работает, информация не находится в объекте java.sql.Date. Я ожидаю, что драйверы JDBC или база данных (по сути) обнуляют компонент времени... или информация не была там в первую очередь.

Я думаю, вы должны использовать java.sql.Timestamp и соответствующие методы набора результатов, а также соответствующий тип SQL.

Ответ 5

Если вы действительно хотите использовать тип времени выполнения .Date, просто выполните это:

java.util.Date utilDate = new java.util.Date(sqlDate.getTime());

Брайан.