将格式化日期从Java传递给hsql

时间:2013-06-21 12:47:14

标签: java sql date format hsqldb

我使用以下代码生成日期,以便在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是Date。我需要通过日期。如果我传递值cal.getTime(),则显示无效格式。所以我需要将dateFormatter转换为日期。

我要添加太多代码才能进行转换。所以我想必须有更好的方法来做到这一点。 有什么想法吗?

2 个答案:

答案 0 :(得分:0)

由于hsqldb将日期指定为“DATE yyyy-mm-dd”,您应该这样格式化。 例如“日期1990-11-11”

答案 1 :(得分:0)

Calendar.getTime返回一个日期,Date.getTime()返回一个长整数。这是我用来将日期传递给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();
}