当前位置: 首页 > 知识库问答 >
问题:

如何在两个日期之间的hql动态搜索?

徐英锐
2023-03-14

我有两个日期搜索字段,即从和到。我必须从用户表中检索记录,其startDate位于搜索字段中输入的from和to日期之间,如果from和to日期为空,我必须从用户表中检索所有记录。

我尝试了以下hql查询:

FROM USER 
WHERE 
:start_flag =1 
OR  
STARTDATE between :from and :to

这里start_标志的类型为int,如果from和to为null,则设置为1。

query.setParameter("from",startDt);
query.setParameter("to",endDt);
query.setParameter("start_flag",startFlag);
l=  query.list();

这里的数据类型是:

startDt-java.util.Date

endDt-java.util.Date

startFlag-int

当我在to和from等于null的情况下运行上述查询时,我得到以下异常:

SQL错误:932,SQLState:42000

ORA-00932:不一致的数据类型:预期日期得到了二进制

您能告诉我如何编写HQL查询以实现上述功能吗?

共有1个答案

翁宜年
2023-03-14

按如下方式过滤:

String query = "FROM USER WHERE :start_flag =1 ";
if(startDt!=null && endDt!=null){
   query +="OR STARTDATE between :start_date and :end_date";
}

TypedQuery<USER> hql = entityManager.createQuery(query);

if(startDt!=null && endDt!=null){
   hql.setParameter("start_date",startDt).setParameter("end_date",endDt);
}
List<USER> result = hql.setParameter("start_flag",startFlag).list();
 类似资料:
  • 问题内容: 我有两个日期搜索字段,即从和到。我必须从用户表中检索其startDate位于在搜索字段中输入的起始和终止日期之间的记录,如果起始和终止日期为null,则必须从用户表中检索所有记录。 我尝试了以下hql查询: 在这里,start_flag的类型为int,如果from和to为null,则将其设置为1。 这里的数据类型是: startDt-java.util.Date endDt- java

  • 问题内容: 在MySql数据库中有表 我的问题是,我要传递开始日期和结束日期,然后我将获得列日期,例如: 那么我将获得101,102,103 UserId的值。但是我出错了 问题答案: 这可能会更好: 也可能是保留字,对此不太确定。如果是这种情况,则您需要在其周围加反引号(前后应有一个`)

  • 问题内容: 我需要生成两个给定日期之间的所有日期。只要只有一个日期范围,此方法就可以正常工作。但是,如果我有多个日期范围,则此解决方案不起作用。我在这里以及Asktom上都进行了搜索,但是找不到相关的指针/解决方案。 我使用all_objects和CONNECT BY ROWNUM尝试了两种解决方案,但是没有运气。这是问题说明:sqlfiddle 输入 输出 问题答案:

  • 问题内容: 如果我在两个文本框中有两个日期20-4-2010和22-4-2010,并且我希望日期像这样的20、21、22,我该如何得到? 问题答案: 我很确定这已经回答了四千万次,但是无论如何: 该部分是为了防止代码跳过或者一天重复由于夏令时。 通过给出天数: 使用PHP5.3

  • 问题内容: 在我的应用程序中,用户应从选择日期。问题是生成此列​​表。例如,我需要 2010年至2013年 或 6月至8月 之间的所有日期(期间可能是 day , month , year )。是否有任何方法可以获取该数据? 范例:我需要 2013年1月1* 日 至2013年1月1 日之间的日期 * 2013年1月1日 2013年2月1日 2013年3月1日 2013年4月1日 2013年5月1日

  • 问题内容: 我有两个这样的表: 表格1 表2 我想从 Table1中 选择并插入 Table2中 。 例如: 在表1中,我有这个 在表2中,我想要这个 带有样本数据的表结构 问题答案: 感谢您的架构。它使处理您的问题变得容易。我对您的架构进行了一些更改以利用auto_increment 在这里,我在emp_leave_daywise表上添加了唯一约束,因为id整数上的主键不能确保记录不重复。 em