Основная проблема, с которой сталкиваются начинающие разработчики на Java, это конвертация даты из типа java.util.Date в java.sql.Date. Давайте рассмотрим типичный пример кода, где создается объект java.util.Date и затем пытается использовать его в SQL-запросе.
java.util.Date utilDate = new java.util.Date(); PreparedStatement ps = connection.prepareStatement("INSERT INTO my_table (my_date) VALUES (?)"); ps.setDate(1, utilDate); ps.executeUpdate();
Здесь программа выдаст ошибку компиляции на строке, где устанавливается дату в PreparedStatement, поскольку setDate() требует объект java.sql.Date, а не java.util.Date.
Однако, решение этой проблемы весьма простое. Для того чтобы преобразовать java.util.Date в java.sql.Date, нужно использовать конструктор класса java.sql.Date, который принимает в качестве параметра количество миллисекунд, прошедших с 1 января 1970 года. Это значение можно получить, вызвав метод getTime() у объекта java.util.Date.
java.util.Date utilDate = new java.util.Date(); java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());
Теперь объект sqlDate можно без проблем использовать в PreparedStatement:
PreparedStatement ps = connection.prepareStatement("INSERT INTO my_table (my_date) VALUES (?)"); ps.setDate(1, sqlDate); ps.executeUpdate();
Таким образом, преобразование java.util.Date в java.sql.Date не представляет большого труда и может быть выполнено всего в одну строку кода.
Добавить комментарий