我有两个日期搜索字段,即从和到。我必须从用户表中检索其startDate位于在搜索字段中输入的起始和终止日期之间的记录,如果起始和终止日期为null,则必须从用户表中检索所有记录。
我尝试了以下hql查询:
FROM USER
WHERE
:start_flag =1
OR
STARTDATE between :from and :to
在这里,start_flag的类型为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,SQL状态:42000
ORA-00932:数据类型不一致:预期日期为BINARY
您能告诉我如何编写HQL查询以实现上述功能吗?
像这样过滤它:
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位于搜索字段中输入的from和to日期之间,如果from和to日期为空,我必须从用户表中检索所有记录。 我尝试了以下hql查询: 这里start_标志的类型为int,如果from和to为null,则设置为1。 这里的数据类型是: startDt-java.util.Date endDt-java.util.Date st
问题内容: 在MySql数据库中有表 我的问题是,我要传递开始日期和结束日期,然后我将获得列日期,例如: 那么我将获得101,102,103 UserId的值。但是我出错了 问题答案: 这可能会更好: 也可能是保留字,对此不太确定。如果是这种情况,则您需要在其周围加反引号(前后应有一个`)
问题内容: 在所有三个日期都由的实例表示的情况下,如何检查某个日期是否在其他两个日期之间? 问题答案: 这可能更具可读性:
问题内容: 我想要一个开始日期和结束日期之间的日期列表。 结果应为所有日期的列表,包括开始日期和结束日期。 问题答案: 一次添加一天直到达到结束日期: 实现自己的迭代器也可以做到这一点并不难,那就更好了。
问题内容: 我需要生成两个给定日期之间的所有日期。只要只有一个日期范围,此方法就可以正常工作。但是,如果我有多个日期范围,则此解决方案不起作用。我在这里以及Asktom上都进行了搜索,但是找不到相关的指针/解决方案。 我使用all_objects和CONNECT BY ROWNUM尝试了两种解决方案,但是没有运气。这是问题说明:sqlfiddle 输入 输出 问题答案:
问题内容: 如果我在两个文本框中有两个日期20-4-2010和22-4-2010,并且我希望日期像这样的20、21、22,我该如何得到? 问题答案: 我很确定这已经回答了四千万次,但是无论如何: 该部分是为了防止代码跳过或者一天重复由于夏令时。 通过给出天数: 使用PHP5.3