web-dev-qa-db-ja.com

準備されたステートメントを使用して現在の日付と時刻を設定する方法は?

データベースにDATETIMEデータ型の列があります。 `PreparedStatementを使用して、この列の値を現在の日付と時刻に設定します。それ、どうやったら出来るの?

26
Param-Ganak

PreparedStatement#setTimestamp() を使用します。ここで _Java.sql.Timestamp_ を渡します。これは System#currentTimeMillis() で構築されます。

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

また、DBがサポートしている場合は、DB固有の関数を呼び出して現在のタイムスタンプを設定することもできます。たとえば、MySQLはnow()をサポートしています。例えば。

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

または、DBでサポートされている場合、フィールドタイプを、MySQLのTIMESTAMPの代わりに DATETIME などの挿入/更新タイムスタンプを自動的に設定するものに変更します。

47
BalusC
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());
}
1
kinkee