sql >> データベース >  >> RDS >> PostgreSQL

JPA Criteria API:mm / dd/yyyy形式で日付を取得する方法

    CriteriaAPIはfunction expressionを定義します CriteriaBuilderでネイティブSQL関数を実行する 次のようなインターフェース:

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

    ここで、name SQL関数の名前type 期待されるリターンタイプとargs 引数の変数リストです(存在する場合)。

    基準クエリで使用する方法の例を次に示します。

    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構文に一致するように例が変更されました。



    1. SQL ServerテーブルのINSERTステートメントを自動生成するための最良の方法は何ですか?

    2. 複数列のMySQLSelectステートメントDISTINCT

    3. Windowsxamppでlower_case_table_names=2の値を変更する場所

    4. SQL Server(C#クライアント)に大量のデータを一括挿入するための最速の方法は何ですか