Преобразование метки времени Java в метку времени MySQL и наоборот - PullRequest
1 голос
/ 12 декабря 2011

Как я могу преобразовать метку времени Java (тип данных Timestamp) в метку времени MySQL и наоборот?

Ответы [ 3 ]

5 голосов
/ 12 декабря 2011

Если вы используете JDBC API для доступа к базе данных и используете PreparedStatement, например, для выполнения оператора SQL INSERT, тогда вы просто устанавливаете метку времени в качестве параметра на PreparedStatement:

Timestamp ts = ...; // wherever you get this from

PreparedStatement ps = connection.prepareStatement("INSERT INTO MYTABLE (ts) VALUES (?)");
ps.setTimestamp(1, ts);
ps.executeUpdate();

Аналогичным образом, когда вы делаете запрос, который возвращает отметку времени, получите ее из ResultSet, вызвав getTimestamp. Пример:

Timestamp result = null;

Statement st = connection.createStatement();
ResultSet rs = st.executeQuery("SELECT ts FROM MYTABLE WHERE ...");
if (rs.next()) {
    result = rs.getTimestamp(1);
}

См. Учебник JDBC .

3 голосов
/ 12 декабря 2011

Без дополнительных подробностей о возникшей проблеме вам будет сложно ответить. Однако Java делает это относительно просто, если вы используете подготовленные операторы. Ваш код будет выглядеть примерно так:

Connection conn = getConnection();
PreparedStatement pStmt = conn.prepareStatement("UPDATE my_table SET my_column = ? WHERE id = ?");
pStmt.setTimestamp(1, new Timestamp(System.currentTimeMillis()));
pStmt.setInt(2, 42);
pStmt.executeUpdate();
1 голос
/ 12 декабря 2011

Насколько я вижу из документов MySQL, java.sql.Timestamp должен просто работать, если вы читаете его или пишете его в TIMESTAMP поле в базе данных.Так что вам не нужно делать никаких преобразований.

...