У меня есть столбец в базе данных с типом данных DATETIME
. Я хочу установить это значение столбца в текущую дату и время, используя `PreparedStatement. Как это сделать?
Как установить текущую дату и время с помощью подготовленного оператора?
Ответ 1
Используйте PreparedStatement#setTimestamp()
, в котором вы передаете java.sql.Timestamp
, который построен с System#currentTimeMillis()
.
preparedStatement.setTimestamp(index, new Timestamp(System.currentTimeMillis()));
// ...
Альтернативно, если БД поддерживает его, вы также можете вызвать определенную функцию DB, чтобы установить ее с текущей меткой времени. Например, MySQL поддерживает now()
для этого. Например.
String sql = "INSERT INTO user (email, creationdate) VALUES (?, now())";
Или, если БД его поддерживает, измените тип поля на тот, который автоматически устанавливает временную метку вставки/обновления, например TIMESTAMP
DATETIME
в MySQL.
Ответ 2
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());
}