java.time
DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("d-MMM-uuuu", Locale.ENGLISH);
String fullName = "Emmanuel Macron";
int idNumber = 42;
String entryDateString = "17-Dec-2018";
LocalDate entryDate = LocalDate.parse(entryDateString, dateFormatter);
PreparedStatement insertStatement = yourDbConnection.prepareStatement(
"insert into your_table (name, id, entry) values (?, ?, ?);");
insertStatement.setString(1, fullName);
insertStatement.setInt(2, idNumber);
insertStatement.setObject(3, entryDate);
int rowsInserted = insertStatement.executeUpdate();
Пример немного проще, чем ваш, но должен ответить на то, о чем вы спрашиваете, поэтому я доверяю вам все остальное.Я использую (и горячо рекомендую) java.time, современный Java API даты и времени, для всей работы с датами в Java.
Шаги, связанные с датой:
- Разобрать строку даты в
LocalDate
.LocalDate.parse(entryDateString, dateFormatter)
делает это.В строке шаблона формата d-MMM-uuuu
d
означает день месяца из 1 или 2 цифр, MMM
означает сокращение месяца, а uuuu
означает год из 4 цифр.Аббревиатура месяца зависит от региона.Поскольку я взял Dec
как английский, я указал английскую локаль для форматера;пожалуйста, исправьте, если ваши строки даты на другом языке. - Передайте
LocalDate
вашему PreparedStatement
.insertStatement.setObject(3, entryDate);
делает это.
Если вы хотите проверить, что первая точка работает должным образом:
System.out.println("Entry date was parsed into " + entryDate);
Вывод:
Дата вводабыл проанализирован в 2018-12-17
PS Вы также можете проверить, можете ли вы получить дату из Excel другим способом.Если вы используете более старую библиотеку, такую как Apache POI, я боюсь, что другой вариант - это старомодный объект Date
, который затем нужно будет преобразовать, поэтому возникает вопрос, стоит ли оно того.
Ссылка: Обучающее руководство по Oracle: Дата и время , объясняющее, как использовать java.time.