0

DATETIME を DATE にキャストするビューがあるので、時刻の部分は無視できます。

CAST(av.date as DATE),

コードを使用して、特定の日付でこのビューをクエリしようとしました。

s.date BETWEEN :start AND :end

これらのパラメーターを設定するには、日付を受け取り、次のコードを使用して切り捨てます。

DateTime beginDate = new DateTime(bgn);
DateTime endDate = new DateTime(end);
Date startDt = DateUtils.truncate(beginDate.toDate(), Calendar.DATE);
Date endDt = DateUtils.truncate(endDate.toDate(), Calendar.DATE);

問題は、これが JDBC に到達すると、次のエラーが発生することです。

WARN [JDBCExceptionReporter] SQL エラー: 241、SQLState: 22007
ERROR [JDBCExceptionReporter] 文字列から日付や時刻を変換するときに変換に失敗しました。

日付は、次のコードを使用してクエリに設定されます。

Query query = entityManager.createNamedQuery(name);
query.setParameter("start", startDt);

何が起こっているのか、誰にも手がかりがありますか? このエラーに関するこのリンクを見つけましたが、まったく役に立ちません。私はこれで100%迷っています。

4

1 に答える 1

0

日付をクエリに渡す方法はわかりませんが、日付を文字列に変換してからクエリに渡すことができます。

DateTime beginDate = new DateTime(bgn);
DateTime endDate = new DateTime(end);
DateFormat df = new SimpleDateFormat("yyyyMMdd");
String startDt = df.format(DateUtils.truncate(beginDate.toDate(), Calendar.DATE));
String endDt = df.format(DateUtils.truncate(endDate.toDate(), Calendar.DATE));

あなたの正確なコードを知らなければ、それは少し推測です。

于 2013-06-18T19:28:05.533 に答える