0

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

8

Вопрос: Как простейшим способом преобразовать объект java.sql.Date в java.util.Date, сохранив при этом временную метку?

Я попытался сделать это следующим образом:

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

Однако это не сработало. В переменной по-прежнему сохраняется только часть даты без времени. Как можно решить эту проблему?

5 ответ(ов)

0

Поскольку java.sql.Date наследует от java.util.Date, вы можете сделать так:

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

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

0

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

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

Таким образом, getTimestamp вернет вам объект, который учитывает как дату, так и время.

0

Если вы действительно хотите, чтобы тип во время выполнения был именно util.Date, просто сделайте следующее:

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

Надеюсь, это поможет!

0

Эта функция преобразует объект SQL даты в объект даты Java. Вот пример реализации:

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;
    }

Функция принимает параметр sqlDate типа java.sql.Date. Если sqlDate не равен null, то создается новый объект java.util.Date, используя время из объекта SQL даты. В результате вы получаете дату в формате Java. Если же входной параметр равен null, функция вернет null.

0

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

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

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

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь