JDBC Prepared Statement . setDate(....) doesn't save the time, just the date.. How can I save the time as well?

Wael Awada picture Wael Awada · Jul 29, 2011 · Viewed 36.7k times · Source

I have the following Query :

INSERT INTO users (user_id, date_created) VALUES (?,?)

I have the following prepared statement

PreparedStatement insertUser = dbConnection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);

insertUser.setInt(1, 7);
java.util.Date now = new java.util.Date(System.currentTimeMillis());
insertUser.setDate(2, new java.sql.Date((new Date(System.currentTimeMillis())).getTime()));
insertUser.executeUpdate();

If I check the database, I find that it is inserting only today's date not the time though, so it would be : 2011-07-29 00:00:00

What should I put in the setDate() to get the time as well?

Answer

Maurício Linhares picture Maurício Linhares · Jul 29, 2011

Instead of Date you should use a Timestamp and the setTimestamp method.

pratically you have to do something like that:

private static java.sql.Timestamp getCurrentTimeStamp() {
    java.util.Date today = new java.util.Date();
    return new java.sql.Timestamp(today.getTime());
}

....

preparedStatement.setTimestamp(4,getCurrentTimeStamp());