MySQL Handling datetimes и метки времени в Java

В JAVA-приложении, что польза поставила бы под угрозу с точки зрения экс-трассировки и ввода информации о дате с базой данных MySQL с помощью соединения datetimes и меток времени?

57
задан BalusC 24 July 2010 в 04:53
поделиться

2 ответа

В Java дата обычно представлена (плохо разработанным, но это в сторону) java.util.Date. В основном она подкреплена временем эпохи в виде long, также известным как временная метка. Она содержит информацию как о дате, так и о времени. В Java точность выражается в миллисекундах.

На стороне SQL существует несколько стандартных типов даты и времени, DATE, TIME и TIMESTAMP (в некоторых БД также называется DATETIME), которые представлены в JDBC как java. sql.Date, java.sql.Time и java.sql.Timestamp, все подклассы java.util.Date. Точность зависит от БД, часто в миллисекундах, как в Java, но может быть и в секундах.

В отличие от java.util.Date, java.sql.Date содержит только информацию о части даты (год, месяц, день). Time содержит информацию только о части времени (часы, минуты, секунды), а Timestamp содержит информацию об обеих частях, как это делает java.util.Date.

Обычная практика хранения временной метки в БД (таким образом, java.util.Date на стороне Java и java.sql.Timestamp на стороне JDBC) заключается в использовании PreparedStatement#setTimestamp().

java.util.Date date = getItSomehow();
Timestamp timestamp = new Timestamp(date.getTime());
preparedStatement = connection.prepareStatement("SELECT * FROM tbl WHERE ts > ?");
preparedStatement.setTimestamp(1, timestamp);

Обычной практикой для получения временной метки из БД является использование ResultSet#getTimestamp().

Timestamp timestamp = resultSet.getTimestamp("ts");
java.util.Date date = timestamp; // You can just upcast.
106
ответ дан 24 November 2019 в 19:30
поделиться

В документации MySQL есть информация о сопоставлении типов MySQL с типами Java. Как правило, для даты и времени MySQL следует использовать java.sql.Timestamp . Вот несколько ресурсов:

http://dev.mysql.com/doc/refman/5.1/en/datetime.html

http://www.coderanch.com/t/304851/JDBC/java/ Java-date-MySQL-date-conversion

Как сохранить Java Date в Mysql datetime ...?

http://www.velocityreviews.com/forums/t599436-the-best-practice-to-deal -with-datetime-in-mysql-using-jdbc.html

РЕДАКТИРОВАТЬ:

Как указывали другие, предложение использовать строки может привести к проблемам.

8
ответ дан 24 November 2019 в 19:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: