В приложении java было бы хорошим компромиссом с точки зрения экстрадиции и ввода информации о дате в базу данных MySQL с использованием сочетания дат и временных меток?
Обработка MySQL datetime и временных меток в Java
Ответ 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
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...?
EDIT:
Как указывали другие, предложение об использовании строк может привести к проблемам.