Ich habe eine Spalte in der Datenbank mit dem Datentyp DATETIME
. Ich möchte diesen Spaltenwert mit `PreparedStatement auf das aktuelle Datum und die aktuelle Uhrzeit setzen. Wie mache ich das?
Verwenden Sie PreparedStatement#setTimestamp()
, wobei Sie einen Java.sql.Timestamp
übergeben, der mit System#currentTimeMillis()
erstellt wurde.
preparedStatement.setTimestamp(index, new Timestamp(System.currentTimeMillis()));
// ...
Wenn der DB dies unterstützt, können Sie alternativ auch eine DB-spezifische Funktion aufrufen, um sie mit dem aktuellen Zeitstempel festzulegen. Beispielsweise unterstützt MySQL hierfür now()
. Z.B.
String sql = "INSERT INTO user (email, creationdate) VALUES (?, now())";
Wenn der DB dies unterstützt, ändern Sie den Feldtyp in einen Typ, der den Einfügungs-/Aktualisierungszeitstempel automatisch festlegt, z. B. TIMESTAMP
anstelle von DATETIME
in MySQL.
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);
Wo die Funktion getCurrentDatetime () folgendes tut:
public Java.sql.Date getCurrentDatetime() {
Java.util.Date today = new Java.util.Date();
return new Java.sql.Date(today.getTime());
}