【问题标题】:Java - set currentDate time in Native Query?Java - 在本机查询中设置 currentDate 时间?
【发布时间】:2021-08-06 14:45:16
【问题描述】:

我的实体中有以下字段:

@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

【问题讨论】:

  • 您使用的是哪个数据库实现?为什么你在 java 中使用过时的 API 来表示日期和时间?
  • 尝试用撇号包围 updatedDate
  • 数据库中的DATETIME 可能需要偏移量,这需要您更改模式。

标签: java sql datetime nativequery


【解决方案1】:

如果你真的在做一个原始的 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 中的一组新的日期/时间函数取代。相反,请考虑将 Calendar 替换为 LocalDateTime

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2015-09-24
      • 1970-01-01
      • 2019-01-27
      • 1970-01-01
      • 2020-03-26
      • 2018-08-27
      • 1970-01-01
      • 1970-01-01
      • 2018-05-27
      相关资源
      最近更新 更多