En meget bedre måde at håndtere dette på er ved din databaseside. Angiv standardværdien for TIMESTAMP
, mens du opretter tabellen kolonne som
CREATE TABLE posts (
id INTEGER AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(50) NOT NULL,
creation_date TIMESTAMP DEFAULT NOW()
);
Eksemplet viser en CREATE TABLE
for MySQL, men konceptet er det samme. Mens du indsætter din række, skal du bare ikke angive nogen værdi for kolonnen creation_date
og databasen vil automatisk udfylde den for dig.
Givet den samme tabel, hvis du vil indsætte datoen fra Java, skal din kode se ud som
// 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();
}
Bemærk, at du også skal åbne en DB Connection
(conn
objekt ovenfor) og luk den, når du er færdig med den. Hvis du er ny til JDBC API, så tag et kig på JDBC Basics
først.