如何使用预准备语句设置当前日期和时间?

时间:2011-10-02 11:31:08

标签: java datetime jdbc prepared-statement

我在数据库中有一个数据类型为DATETIME的列。我想使用`PreparedStatement将此列值设置为当前日期和时间。我该怎么做?

2 个答案:

答案 0 :(得分:46)

使用PreparedStatement#setTimestamp(),其中传递java.sql.Timestamp构建的System#currentTimeMillis()

preparedStatement.setTimestamp(index, new Timestamp(System.currentTimeMillis()));
// ...

Alternativaly,如果DB支持它,您还可以调用特定于DB的函数来使用当前时间戳设置它。例如,MySQL为此支持now()。 E.g。

String sql = "INSERT INTO user (email, creationdate) VALUES (?, now())";

或者如果数据库支持它,请将字段类型更改为自动设置插入/更新时间戳的字段类型,例如MySQL中的TIMESTAMP而不是DATETIME

答案 1 :(得分:1)

conn = getConnection();
String query = "insert into your_table(id, date_column) values(?, ?)";
pstmt = conn.prepareStatement(query);
pstmt.setString(1, "0001");
java.sql.Date date = getCurrentDatetime();
pstmt.setDate(2, date);

函数getCurrentDatetime()执行以下操作:

public java.sql.Date getCurrentDatetime() {
    java.util.Date today = new java.util.Date();
    return new java.sql.Date(today.getTime());
}