0

こんにちはみんな私はこのようなSQLクエリを持っています:

SELECT * FROM PEOPLE P WHERE to_char(P.BIRTH_DATE,'DD/MM/YYYY') = '01/06/2012'

このクエリをHibernateRestrictionsAPIを介して実行したいと思います。私は以下が同じ仕事をしないと思います:

Restrictions.eq(People.PROP_BIRTH_DATE, Calendar.getInstance())

どうすればそのような制限を作成できますか?

4

1 に答える 1

1
java.sql.Date date = java.sql.Date.valueOf("2012-06-01");
criteria.add(Restrictions.eq(People.PROP_BIRTH_DATE, date));

また

DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
Date date = df.parse("01/06/2012");
criteria.add(Restrictions.eq(People.PROP_BIRTH_DATE, date));

上記は、誕生日がタイムスタンプとしてではなく、データベースに日付として保存されていることを前提としています。データベースの誕生日がタイムスタンプであり、したがって時間部分がある場合、それを行うための移植可能な方法は次のとおりです。

DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
Date begin = df.parse("01/06/2012");
Calendar endCalendar = Calendar.getInstance();
endCalendar.setTime(date);
endCalendar.add(Calendar.DATE, 1);
criteria.add(Restrictions.ge(People.PROP_BIRTH_DATE, begin));
criteria.add(Restrictions.lt(People.PROP_BIRTH_DATE, endCalendar.getTime()));
于 2012-06-15T07:20:01.247 に答える