我使用以下代码生成日期,以便在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
转换为日期。
我要添加太多代码才能进行转换。所以我想必须有更好的方法来做到这一点。 有什么想法吗?
答案 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();
}