Предполагая, что вы используете хотя бы JDBC версии 4.2 (которой вы, вероятно, являетесь), это намного проще и понятнее, чем вы думаете (не тестировалось):
LocalDate date = LocalDate.parse(assignDates);
cstmt.setObject(2, date);
Нет необходимости в DateFormat
/ SimpleDateFormat
и нет необходимости в java.util.Date
или java.sql.Date
. Что очень хорошо, потому что у этих классов были проблемы с дизайном, особенно первые из них были проблематичными. Все эти старые классы считаются давно устаревшими.
Вместо этого используйте LocalDate
из java.time, современного Java-API даты и времени. С современным API гораздо приятнее работать.
Я пользуюсь тем фактом, что ваша строка, 2011-12-12
, имеет формат ISO 8601, формат, который современные классы даты и времени анализируют (и также печатают) как значения по умолчанию, то есть без какого-либо явного средства форматирования .