7

内部結合テーブルのクエリがあります:

List<Object[]> resultList = entityManager.createNativeQuery(SOME QUERY).getResultList();

Object[]そのうちの1つの要素にアクセスしようとすると、次のようになりますDate

for(Object[] obj : resultList) {
    Date createdDate = obj[7] !=null ? new Date(Long.valueOf(obj[7] + "")) : null;
} 

これは明らかな例外を与えました:

nested exception is java.lang.NumberFormatException: For input string: "2012-11-20"

私は取得するために変更しDateましたDateTimeTO_CHAR(createdDate,'DD.MM.YYYY:HH24:MI:SS')

そして、以下のコードを試しました:

DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
Date createdDate = null;
try {
    createdDate = df.parse(obj[7] + "");
} catch (ParseException e) {
    e.printStackTrace();
}

このアプローチの結果は次のとおりです。createdDate = null

助言がありますか ?

4

1 に答える 1

21

SQLクエリからの日付を解析する必要はありません。それらは、日付またはタイムスタンプのインスタンスとして返されるはずです。クエリを表示してください。

おそらくjava.sql.Dateインスタンスが戻ってきますが、それらを空の文字列と連結することによって、それらを文字列に変換しています。

obj[7] + ""

ただやる

Date createdDate = (Date) obj[7];
于 2012-12-14T12:09:18.957 に答える