0

我试图弄清楚如何获得比当前日期正好一年的日期,并将其作为参数传递给 HQL。

我尝试使用日历。但是我在将其转换为 Oracle 所需的正确日期格式时迷失了方向。

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);
String dateLimit = cal.getTime().toString();
Date dateFormatter = new SimpleDateFormat("dd-MMM-yyyy").parse(dateLimit); // This one shows I need to either wrap it up in try catch or specify in throws.

//Date cutOffDate = dateFormatter.parse(dateLimit); //tried this. no avail

queryBuilder.append(" and c.dateOfContact >= :cutOffDate ");
parameters.put("cutOffDate", dateFormatter);

或者,是否有任何用于日期操作的 Hibernate 内置函数?我想要的只是将日期传递给查询,该日期比当前日期少一年。

Oracle 日期格式为 dd-MMM-yyyy。(例如:2013 年 6 月 21 日)

4

2 回答 2

1
Date d =  cal.getTime();
Query query = em.createQuery(QUERYSTRING)setParameter("cutOffDate", d);

以上应该有效,不要将您的日期格式化为字符串,因为那样您将比较 aString和 a Date

于 2014-04-18T18:25:48.020 回答
1

我认为这会起作用:

parameters.put("cutOffDate", cal.getTime());

如果 c.dateOfContact 的类型是 java.util.Date 或 java.sql.Date 则 cal.getTime() 必须工作。

于 2013-06-21T18:12:10.373 回答