Java - 在本机查询中设置 currentDate 时间?

Java - set currentDate time in Native Query?

我的实体中有以下字段:

@JsonProperty
@Column(name = "updated")
@Temporal(TemporalType.TIMESTAMP)
private Calendar updated;

我有以下本机查询,我试图在上面设置更新日期:

DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String updatedDate = dateFormat.format(Calendar.getInstance().getTime());
    
String queryString = "update " + "persons" +
                     " set updated = " + updatedDate" +
                     " where person_id = 1";

但我收到一条错误消息 incorrect datetime value

如何设置值?在数据库中是datetime

如果你真的在做一个原始的 JDBC 更新查询,那么你应该在这里使用一个准备好的语句:

String sql = "UPDATE persons SET updated = ? WHERE person_id = 1";
PreparedStatement ps = conn.prepareStatement(sql);
java.util.Date date = Calendar.getInstance().getTime();
java.sql.Date sqlDate = new java.sql.Date(date.getTime());
ps.setDate(1, sqlDate);
int numRowsAffected = ps.executeUpdate();

但您可能要考虑不再使用 Calendar,因为它已被 Java 8 中的一套新的 date/time 函数所取代。相反,请考虑将 CalendarLocalDateTime.

尝试使用此查询。我在您最终形成的查询中也看到了一些语法错误。

String queryString = "update " + "persons" +
                     " set updated = '" + updatedDate + "' " +
                     " where person_id = 1";