0

テーブルから 180 日より古いすべての行を検索する必要があるという要件があります。そのために、以下の SQL クエリを作成しました。

SELECT * FROM table_name WHERE 
(EXTRACT (DAY  FROM (CURRENT_TIMESTAMP - UPDATE_TS))) > 180

上記のクエリで、UPDATE_TSは各行のタイムスタンプを格納する列です。

上記のクエリを Oracle で実行すると、必要な結果が返されました。

私はデータの永続化に Hibernate を使用しているため、Hibernate Criteria API を使用して同じことを行いたいと考えています。私はHibernateであまり働いていないので、それを行うのは少し難しいと思います.

誰かがこれで私を助けてくれますか?

4

2 に答える 2

0

CURRENT_DATE|のいずれかを取得できます CURRENT_TIME | JPQLでの日付/時刻操作のCURRENT_TIMESTAMP。EXTRACTどの実装でも使用法は見られませんでした。だからあなたはおそらく日を直接比較したいかもしれませんか?詳細については、 JPQLのドキュメントを確認してください。

于 2012-09-20T14:25:05.777 に答える
0

Hibernate クエリ言語が理想的です。

from YourEntity e where (day(current_date()) - day(e.myDate)) > 180

私はこの HQL をテストしていませんが、同様のものが動作するはずです。HQL について読む: http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/queryhql.html

于 2012-09-20T16:40:31.060 に答える