2012-06-15 4 views
0

У меня есть база данных, которая будет иметь отметки времени UMT в стандартном формате sql. Как я могу вытащить эти данные и установить с ним объект даты java?Sql timestamp to Java date?

Насколько я знаю, mysql is yyyy-mm-dd hh:mm:ss Что касается java, материал даты/времени всегда ускользал от меня.

Если кто-нибудь знает хорошую библиотеку для этого, я открыт для предложений.

ответ

4

Почему не сразу прочитать его как Date

Date date = resultSet.getTimestamp("date_field"); 

Timestamp timestamp = resultSet.getTimestamp("date_time_field"); 

См

+1

Это * НЕ * безопасно для использования по сравнению с другими экземплярами java.util.Date, которые на самом деле не являются java.sql.Timestamp внизу. Новый java.util.Date должен быть сделан из длинного значения java.sql.Timestamp – Affe

1

Отметка является подклассом Date, который означает, что она годна к употреблению где есть дата. Единственное отличие состоит в том, что Timestamp более точно (из-за спецификации SQL), чем Date.

Просто используйте:

Timestamp t = resultSet.getTimestamp("columnname"); 
Date d = t; 

что сказавший, есть некоторые преимущества преобразования возвращенного метки JDBC в нужное значение Date, опуская наносекунд. Когда вы сравниваете отметку времени и дату в какой-либо удаленной части вашего приложения, отметка времени и дата не будут равны, даже если они кажутся «грубыми» одним и тем же значением времени. Так что, если это может привести к проблеме, создать новый экземпляр Date, используя только .getTime значение(), возвращаемый Timestamp)

Подробнее об этом в своем блоге: Timestamp and Date equality when using Hibernate

(даже если запись в блоге о Hibernate, это относится и к вашему делу)