Mysql
 sql >> Database >  >> RDS >> Mysql

Come ottenere un timestamp in Java e archiviarlo nel database MySQL?

Un modo molto migliore per gestirlo è sul lato del database. Durante la creazione della tabella specificare il valore predefinito per il TIMESTAMP colonna come

CREATE TABLE posts (
    id INTEGER AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(50) NOT NULL,
    creation_date TIMESTAMP DEFAULT NOW()
);

L'esempio mostra un CREATE TABLE per MySQL ma il concetto è lo stesso. Durante l'inserimento della riga, non specificare alcun valore per la colonna creation_date e il database lo popolerà automaticamente per te.

Data la stessa tabella, se vuoi inserire la data da Java, il tuo codice dovrebbe assomigliare a

// 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();
}

Nota che dovresti anche aprire un DB Connection (il conn oggetto sopra) e chiuderlo quando hai finito. Se non conosci l'API JDBC, dai un'occhiata a Nozioni di base su JDBC prima.