当前位置: 首页 > 面试题库 >

带有时间戳和日期字段的JPA选择查询无法检索结果

从智明
2023-03-14
问题内容

我正在尝试使用JPA查询来获取记录,该查询在WHERE子句中具有DATE和TIMESTAMP列。但是日期和时间戳列无法以某种方式从数据库中检索任何内容。

代码段:

String sql = "Select F.* from FIN_TABLE F where F.COL1_NUM = :COL1 and F.COL2_TIMESTAMP =:COL2 and F.COL3_DATE =:COL3";
Query query = JPAentityManager.createNativeQuery(sql);
query.setParameter("COL1", 123);
//java.sql.Timestamp:2014-10-29 12:00:00.0
query.setParameter("COL2", new java.sql.Timestamp(new java.sql.Date(new SimpleDateFormat("MMM dd yyyy HH:mm:sssa").parse("OCT 29 2014 12:00:000AM").getTime()).getTime()));
//java.sql.Date:2014-10-29
query.setParameter("COL3", new java.sql.Date(new SimpleDateFormat("MMM dd yyyy HH:mm:sssa").parse("OCT 29 2014 12:00:000AM").getTime()));

List<FinTable> result =  (List<FinTable>)query.getResultList();

Oracle中的数据是:

COL1_NUM COL2_TIMESTAMP COL3_DATE
123年10月29日至29日12.00.00.000000000 14年11月26日
456 14年10月29日12.00.00.000000000 AM 14年11月26日

我最初尝试使用EntityManager.find(Class,Object)检索结果,但是也失败了,所以我尝试使用createNativeQuery(),但也未能成功。我的FinTable实体具有这些列作为“时间戳记”和“日期”。

请开导正确的方法。:) 谢谢 !!


问题答案:

感谢回复。问题已解决。

我正确使用了DATE和TIMESTAMP对象
问题问题的50%是SimpleDateFormat解析,其中我曾提到24小时小时格式(HH)和AM / PM,要使用的正确解析器是…

“ MMM dd yyyy hh :mm:sssa” // 2014年10月29日12:00:000AM

并不是…

“ MMM dd yyyy HH :mm:sss a ” // OCT 29 2014 00:00:000

剩下的50%是与COL3_DATE列有关,该列被错误地定义为DATE,但最初是TIMESTAMP;将其更改为TIMESTAMP可解决此问题。

但是,无论如何,使用Date仍然是问题(java.sql.Date,带有Temporal.DATE的java.util.Date)。

感谢您的贡献。:)



 类似资料:
  • 问题内容: 我有以下数据: 我正在尝试编写一个查询,该查询选择与某个日期匹配的所有记录,但是我正在为该字段使用时间戳记,无论我如何尝试,我的查询都不会产生任何结果。 SQL :我尝试了以下查询,但没有任何结果 1。 2。 3。 仅当我将整个日期值设置为时,它才起作用; 问题答案: 尼古拉斯·克拉斯诺夫(Nicholas Krasnov)提供的答案

  • 问题内容: 如何从PostgreSQL的时间戳获取最多只有几分钟而不是几秒钟的日期和时间。我需要日期和时间。 例如: 为此,我需要 从带有时区的时间戳字段中说出,如何使用PostgreSQL select查询获取日期和时间。 请帮我。 问题答案: postgresql有很多可用的日期时间函数: 在这里查看清单 http://www.postgresql.org/docs/9.1/static/fu

  • 问题内容: 全部, 我有一个带有称为时间戳记的列的MYSQL表。它的数据类型为“ 10/1/2009 3:25:08 PM”,“ 10/1/2009 3:30:05 PM”,“ 10/4/2009 3:40:01 PM”,等等.. 我想编写一个SQL查询来选择在两个日期之间出现的时间戳字段中的所有值。 userInput日期将没有时间部分。您能为此建议正确的MySQL查询语法吗?谢谢 问题答案:

  • 我试图构建一个Spring Boot REST API,从MySQL DB中获取数据。这是我在Spring Boot REST API应用程序的存储库代码中定义的JPA查询方法: 这是我要查询的表的详细信息:

  • 问题内容: 如何从mysql表中选择过去日期到当前日期的数据?例如,选择从2009年1月1日到当前日期? 我的“ datetime”列为datetime日期类型。请帮忙,谢谢 编辑: 如果说我想从2009年1月1日开始获得每天的数据,该如何编写查询?使用计数和函数之间? 问题答案: 或使用和:

  • 问题内容: 从Java,我在DB2上执行以下查询: 该字段是一个长度32 I的使用设置的参数在preparedStatement时方法。 我得到了错误: sqstate的意思是“此版本的DB2应用程序请求程序,DB2应用程序服务器或两者的组合不支持功能”。但是我没有使用任何奇怪的功能。 我已经尝试使用squ客户端查询: 一切顺利。 是什么原因引起的? 更新:准备语句的代码: 问题答案: 尝试更改为