sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo obtener una marca de tiempo en Java y almacenarla en la base de datos MySQL?

Una forma mucho mejor de manejar esto es desde el lado de la base de datos. Al crear la tabla, especifique el valor predeterminado para el TIMESTAMP columna como

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

El ejemplo muestra un CREATE TABLE para MySQL pero el concepto es el mismo. Al insertar su fila, simplemente no especifique ningún valor para la columna creation_date y la base de datos la completará automáticamente por usted.

Dada la misma tabla, si desea insertar la fecha de Java, su código debería verse como

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

Tenga en cuenta que también necesitaría abrir una base de datos Connection (la conn objeto anterior) y ciérrelo cuando haya terminado. Si es nuevo en la API de JDBC, eche un vistazo a Fundamentos de JDBC primero.