Обработка MySQL datetime и временных меток в Java

В приложении java было бы хорошим компромиссом с точки зрения экстрадиции и ввода информации о дате в базу данных MySQL с использованием сочетания дат и временных меток?

Ответ 1

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

В SQL-стороне существует несколько стандартных типов даты и времени, DATE, TIME и TIMESTAMP (в некоторых DB также называется 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.

Ответ 2

Документация MySQL содержит информацию о сопоставлении типов MySQL с типами Java. В общем, для MySQL datetime и timestamps вы должны использовать 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 в Mysql datetime...?

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

EDIT:

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