0

現在の日付よりちょうど 1 年後の日付を取得し、それをパラメーターとして 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 組み込み関数はありますか? 私が望むのは、現在の日付より1年少ない日付をクエリに渡すことだけです。

Oracle の日付形式は dd-MMM-yyyy です。(例: 2013 年 6 月 21 日)

4

2 に答える 2

1

私はこれがうまくいくと思います:

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

c.dateOfContact のタイプが java.util.Date または java.sql.Date の場合、cal.getTime() が機能する必要があります。

于 2013-06-21T18:12:10.373 に答える
1
Date d =  cal.getTime();
Query query = em.createQuery(QUERYSTRING)setParameter("cutOffDate", d);

上記は機能するはずです。日付を文字列としてフォーマットしないでください。a と a を比較することになるからStringですDate

于 2014-04-18T18:25:48.020 に答える