как получить формат даты JDBC? - PullRequest
1 голос
/ 22 ноября 2011

Я просмотрел страницу и не нашел удовлетворительного ответа.

Есть ли возможность получить формат данных по умолчанию из JDBC?

Я пишу программу, в которой пользователь может выбрать другой тип баз данных (например, Oracle, MSSQL и т. Д.) И вставить в него данные. Мне нужно, чтобы JDBC сказал мне, какой формат даты по умолчанию.

Есть ли кто-нибудь, кто встречался с этим делом раньше?

Заранее спасибо за ответы.

Ответы [ 2 ]

4 голосов
/ 22 ноября 2011

Вам не нужно формат даты.Вы должны использовать PreparedStatement и позвонить setDate или setTimestamp для передачи данных.Не нужно преобразовывать его в строковый формат, поскольку вы не должны представлять значения (или любые значения) в SQL.

3 голосов
/ 22 ноября 2011

Обычно вам не важно формат даты. Если вы это сделаете, то это означает, что вы рассматриваете даты как строки, сохраняя их как String на стороне Java и как VARCHAR на стороне БД. Это не верно. На стороне Java они должны храниться как java.util.Date, а на стороне БД - как DATETIME или TIMESTAMP или, возможно, DATE (если вам не важна временная часть).

Обычный способ сохранить дату (со временем) - использовать PreparedStatement#setTimestamp():

preparedStatement = connection.prepareStatement("INSERT INTO person (birthdate) VALUES (?)");
preparedStatement.setTimestamp(1, new Timestamp(date.getTime()));
// ...

И обычный способ вернуть его - использовать ResultSet#getTimestamp():

Date date = resultSet.getTimestamp("birthdate");
// ...

Это не только устраняет необходимость беспокоиться о форматах строк даты по умолчанию для конкретных БД, но также позволяет более детально контролировать выбор дат с помощью >, <, BETWEEN и т. Д. На стороне SQL и более тонкое форматирование даты с использованием SimpleDateFormat на стороне Java.

Смотри также:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...