0

我正在使用以下代码生成日期以将其作为日期参数传递到 hsql 数据库日期字段中。

  Calendar cal = Calendar.getInstance();  
  cal.setTime(new Date());  
  cal.set(Calendar.HOUR_OF_DAY, 0);
  cal.set(Calendar.MINUTE, 0);
  cal.set(Calendar.SECOND, 0);
  cal.set(Calendar.MILLISECOND, 0);
  cal.add(Calendar.YEAR, -1);
  Date cutOffDate = cal.getTime();
  String dateFormatter = new SimpleDateFormat("dd-MMM-yyyy").format(cutOffDate);
  queryBuilder.append(" and c.ContactDt >= :cutOffDate ");

但是 c.ContactDt 是日期。我需要通过日期。如果我传递值 cal.getTime(),它会显示无效格式。所以我需要转换dateFormatter为日期。

我添加了太多代码来转换。所以我想一定有更好的方法来做到这一点。任何想法?

4

2 回答 2

0

由于 hsqldb 将日期指定为“DATE yyyy-mm-dd”,因此您应该以这种方式对其进行格式化。例如“日期 1990-11-11”

于 2013-06-21T12:55:19.557 回答
0

Calendar.getTime返回一个日期,Date.getTime()返回一个 long。这是我用来将日期传递到 HSQL 存储过程的示例。注意我转换为 java.sql.date。可能是一种更好的方法,但至少你看到了一种方法。

static JSONArray getSigsummXtab(Connection cn, int mySiteid, Date myDate ) throws SQLException {
PreparedStatement pstmt = cn.prepareStatement("{ call rpt.getSigsummXtab(?, ?) }");
pstmt.setInt(1, mySiteid);
pstmt.setDate(2, new java.sql.Date(myDate.getTime()));
pstmt.execute(); 
pstmt.close();
}
于 2013-06-30T01:34:49.817 回答