O wiele lepszym sposobem radzenia sobie z tym jest po stronie bazy danych. Podczas tworzenia tabeli określ domyślną wartość TIMESTAMP
kolumna jako
CREATE TABLE posts (
id INTEGER AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(50) NOT NULL,
creation_date TIMESTAMP DEFAULT NOW()
);
Przykład pokazuje CREATE TABLE
dla MySQL, ale koncepcja jest taka sama. Podczas wstawiania wiersza nie podawaj żadnej wartości dla kolumny creation_date
a baza danych automatycznie zapełni je za Ciebie.
Biorąc pod uwagę tę samą tabelę, jeśli chcesz wstawić datę z Javy, Twój kod powinien wyglądać tak
// Get current time
Timestamp now = new Timestamp(new Date().getTime());
try {
// Prepare INSERT through Connection
PreparedStatement stmt = conn.prepareStatement(
"INSERT INTO posts (title, creation_date) VALUES (?, ?)");
// Bind values
stmt.setString(1, title);
stmt.setTimestamp(2, now);
// Insert
stmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
Zauważ, że musisz również otworzyć DB Connection
(conn
obiekt powyżej) i zamknij go, gdy skończysz. Jeśli dopiero zaczynasz korzystać z interfejsu JDBC API, zapoznaj się z Podstawy JDBC
pierwszy.