【问题标题】:Conversion of java object to Date or DateTimejava对象到日期或日期时间的转换
【发布时间】:2012-12-02 10:19:35
【问题描述】:

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

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"

我将Date 更改为DateTime 得到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

有什么建议吗?

【问题讨论】:

  • 您不必从 SQL 查询中解析日期 cominf。它们应该作为 Date 或 Timestamp 实例返回。向我们展示您的查询。
  • select project.project_id, project.business_id, project_status_type.project_status_desc, project.create_dtm, project.update_dtm, from project_status_type INNER JOIN project on project_status_type.project_status_type_id = project.project_status_type_id and project.project_id = 12345;
  • 您存储日期的数据库列类型是什么?是 DateTime 还是 VARCHAR ?如果它是 @JBNizet 提到的 DateTime,您只需将您的对象转换为 java.sql.Date。如果它是 VARCHAR 并且您知道格式(例如 2012-11-20),那么下面的代码 sn-p 可能会有用。

标签: java date datetime inner-join nativequery


【解决方案1】:

您不必解析来自 SQL 查询的日期。它们应该作为 Date 或 Timestamp 实例返回。向我们展示您的查询。

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

obj[7] + ""

做吧

Date createdDate = (Date) obj[7];

【讨论】:

  • 是的,抱歉刚刚意识到.. 删除评论 +1 :)
  • @JB Nizet 是有效的,我不确定没有尝试过,谢谢 :)
猜你喜欢
  • 2017-04-25
  • 2017-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多