7

我有一个内部连接表的查询:

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

当我尝试访问Object[]其中一个元素时,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"

我改变DateDateTime得到TO_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 查询的日期。它们应该作为 Date 或 Timestamp 实例返回。向我们展示您的查询。

您可能java.sql.Date会返回实例,但是您通过将它们与空字符串连接来将它们转换为字符串:

obj[7] + ""

做就是了

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