Я бы хотел добиться ниже:
У меня дата в строковом формате, например «2015-05-12 15:15:24», Я хотел бы преобразовать его в дату sql в формате «дд-МММ-гг». Однако это не работает. ниже фрагмент кода:
String rawDate = "2015-05-12 15:15:24";
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date =format.parse(rawDate);
Date sqlDate = new java.sql.Date(date.getTime());
SimpleDateFormat changedFormat = new SimpleDateFormat("dd-MMM-yy");
Date date2=changedFormat.parse(changedFormat.format(sqlDate));
Date sqlDate2 = new java.sql.Date(date2.getTime());
System.out.println("sqlDate : "+sqlDate +" :::::: Date2 : "+date2+" :::: sqlDate2 "+sqlDate2);ow here is the Test : "+sqlDate2);
Результат программы:
sqlDate: 2015-05-12 :::::: Date2: Вт, 12 мая, 00:00:00 BST 2015 :::: sqlDate2 2015-05-12
Целью было получить дату в формате java.sql с 12 по 15 мая, но май не переводится в алфавитный месяц, а печатается как число.
я что-нибудь упускаю? любая помощь будет оценена.
Проблема в том, что мне нужно использовать java.sql.Date в методе setDate, и он принимает java.sql.date в качестве второго параметра, то есть setDate (java.lang.String sCol, java.sql.Date d)
Класс java.sql.Date был вытеснен несколько лет назад классом java.time.LocalDate. Используйте PreparedStatement::setObject для передачи LocalDate.
См. Аналогичный вопрос, Вставка и выборка объектов java.time.LocalDate в / из базы данных SQL, такой как H2.
Вопрос не имеет смысла. Вы хотите преобразовать строку в дату SQL, это нормально и несложно. Но затем вы продолжаете говорить «SQL date в формате <что угодно>». В SQL (и на самом деле в большинстве языков) DATE не является строковым типом данных и, в частности, не имеет формата. Каков ваш настоящий вопрос - вам нужно взять строку (которая должна представлять дату в определенном формате) и преобразовать ее в другой нить, представляющий ту же дату, но в другом формате?
@mathguy прав. Устаревший тип java.sql.Date всегда печатается в формате yyyy-MM-dd, но это не означает, что это имеет в этом формате, потому что у него вообще нет формата, и ваш PreparedStatement с радостью воспользуется этим. Бэзил Бурк тоже прав, вам определенно стоит отдать предпочтение LocalDate и yourPreparedStatement.setObject(4, yourLocalDate). О дате в формате см. Также хотите, чтобы текущая дата и время были в формате «дд / ММ / гггг ЧЧ: мм: сс.СС».
Возможный дубликат хотите, чтобы текущая дата и время были в формате «дд / ММ / гггг ЧЧ: мм: сс.СС»




Вы вычислили это, но так и не распечатали:
String rawDate = "2015-05-12 15:15:24";
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = format.parse(rawDate);
java.sql.Date sqlDate = new java.sql.Date(date.getTime());
SimpleDateFormat changedFormat = new SimpleDateFormat("dd-MMM-yy");
System.out.println("Formatted Date: " + changedFormat.format(sqlDate));
Спасибо за ваш отзыв, однако мне нужна дата в формате даты sql, это возвращает желаемую дату в формате String.
Что вы имеете в виду под «В формате даты SQL»? Пожалуйста, дополните. Класс java.sql.Date представляет дату (без времени), но не включает, я повторяю, никакого форматирования даты. Это работа форматтера.
Я указал формат в SimpleDateFormat ("dd-MMM-yy"); но это, похоже, не действует. поскольку месяц печатается как число (например, 05) вместо алфавита (например, май), я хочу добиться того, чтобы он возвращал дату в формате, например. 12 мая 18 в переменной даты java sql.
@RashidKhan - вы, кажется, ужасно запутались между "типом данных" и "форматом". ДАТА и СТРОКА - это типы данных, не существует таких понятий, как «формат даты» и «строковый формат». И у даты нет формата; «формат» применяет Только к строковым представлениям дат, а не к самим датам.
В вашем коде есть дата в желаемом формате, но вы используете дату другого типа объекта.
измените это:
Date date2=changedFormat.parse(changedFormat.format(sqlDate));
Date sqlDate2 = new java.sql.Date(date2.getTime());
на это: String dateformat =(changedFormat.format(sqlDate));
вы можете передать значение из строки в дату вашего объекта. но если вы напечатаете дату var, вы не напечатаете в желаемом формате, потому что:
Дата не хранит в себе какой-либо формат.
Спасибо, Могу ли я передать точную рассчитанную дату в переменной даты java sql?
Да, вы можете пройти, но если вы напечатаете sql date var, вы напечатаете в формате «дд-ММ-гг», а не «дд-МММ-гг»
К вашему сведению, ужасно неприятные старые классы даты и времени, такие как
java.util.Date,java.util.Calendarиjava.text.SimpleDateFormat, теперь являются наследие, вытесненными классами java.time, встроенными в Java 8 и новее. См. Руководство от Oracle.