2016-10-12 59 views
1

"mm/dd/yyyy"形式でカラムの日付を取得したいとします。この列は現在両方の日付と時刻を返していますが、「mm/dd/yyy」形式の日付のみが必要です。JPA Criteria API:日付を "mm/dd/yyyy"形式で取得する方法

以下は、私はインターネット上で多くのことを探索したが、私を助ける任意の解決策を見つけるdid't

select DISTINCT c.name as Facility, 
      to_char(begin_exam,'mm/dd/yyyy') as begin_exam 
from a inner join b on a.rad_exam_id = b.id 
         inner join c on c.id = b.site_id 
group by c.name,to_char(begin_exam,'mm/dd/yyyy') 
order by c.name,to_char(begin_exam,'mm/dd/yyyy') 

基準APIに変換したい私のPostgreSQLのクエリです。これのためのAPIのクエリを書く基準で私を助けてください。

+0

通常の 'java.util.Date'でそれを抽出し、HTML/XML/JSON出力などでフォーマットすることができます。 – coladict

+0

私はgroup by節でmm/dd/yyyy形式を使いたいです。 –

答えて

0
SELECT '2001-02-16 20:38:40'::date; 

date 
---------------- 
2001-02-16 
(1 row) 

または、JPAエンティティフィールドで@TemporalTypeを使用できます。 typeが期待リターン型である、nameがSQL関数の名前である

<T> Expression<T> function(String name, Class<T> type, Expression<?>... args); 

およびargsは、変数リストである:

+0

日付をmm/dd/yyyy形式にしたいのですが、どこに@temporatTypeキーワードを基準apiクエリに入れるのですか。 –

1

基準APIは、以下のようにCriteriaBuilderインターフェースでネイティブSQL関数を実行するfunction expressionを定義します引数(存在する場合)ここ

は基準クエリでそれを使用する方法の例である:

CriteriaBuilder cb = entityManager.getCriteriaBuilder(); 
CriteriaQuery cq = cb.createQuery(String.class); 
Root<RadExamTimes> root = cq.from(RadExamTimes.class); 
cq.select(cb.function("to_char", String.class, root.get("begin_exam"), cb.literal("MM/DD/YYYY"))); 

TypedQuery<String> query = entityManager.createQuery(cq); 
List<String> result = query.getResultList(); 

    RadExamTimes
  • :仮説ルートエンティティ
  • MM/DD/YYYY
  • :データベース固有の形式(これに例 PostgreSQLの日付形式、Oracle形式のOra形式など)
  • to_char :PostgreSQLの関数が
  • begin_examストリング
  • に日付値に変換する:日付フィールドをフォーマットする

literal()方法は、それをラップするために使用されるようになるように書式文字列を渡すことができません。

注:上記の例は、MySQLデータベースとMySQLの機能と日付形式でテストされています。 PostgreSQL構文と一致するように変更されています。

+0

あなたの答えをありがとう。しかし、私はjruby(java + ruby​​)技術です。 NameErrorとしてエラーを出しています:Java :: OrgHibの引数(org.jruby.RubyString、org.jruby.Ru byClass、org.hibernate.ejb.criteria.expression.LiteralExpression)のためのメソッド 'function'なし ernateEjbCriteria: :フィードバックのためのCriteriaBuilderImpl –

+0

Thx。それに応じてあなたの質問にタグを付けるべきではありませんか? JRubyは言及されていません。 – ujulu

+0

私は自分のシステムで実際に動作することを確認し、同様の問題を抱えている他のユーザーに役立つ可能性があるため、答えを修正しました。 – ujulu

関連する問題