Как установить текущую дату и время, используя подготовленное заявление? - PullRequest
25 голосов
/ 02 октября 2011

У меня есть столбец в базе данных, имеющий тип данных DATETIME. Я хочу установить значение этого столбца на текущую дату и время, используя `PreparedStatement. Как мне это сделать?

Ответы [ 2 ]

46 голосов
/ 02 октября 2011

Используйте PreparedStatement#setTimestamp(), где вы передаете java.sql.Timestamp, который построен с System#currentTimeMillis().

preparedStatement.setTimestamp(index, new Timestamp(System.currentTimeMillis()));
// ...

Альтернативно, если БД поддерживает это, вы также можете вызвать специальную функцию БД, чтобы установить ее с текущей меткой времени. Например, MySQL поддерживает now() для этого. Э.Г.

String sql = "INSERT INTO user (email, creationdate) VALUES (?, now())";

Или, если это поддерживает БД, измените тип поля на то, которое автоматически устанавливает метку времени вставки / обновления, например TIMESTAMP вместо DATETIME в MySQL.

1 голос
/ 02 октября 2011
conn = getConnection();
String query = "insert into your_table(id, date_column) values(?, ?)";
pstmt = conn.prepareStatement(query);
pstmt.setString(1, "0001");
java.sql.Date date = getCurrentDatetime();
pstmt.setDate(2, date);

Где функция getCurrentDatetime () выполняет следующие действия:

public java.sql.Date getCurrentDatetime() {
    java.util.Date today = new java.util.Date();
    return new java.sql.Date(today.getTime());
}
...