我在查询中从一天中提取所有数据时遇到了麻烦。
这是我的日历对象:
2018-04-13T00:00:00.000Z//Fri Apr 13 23:59:59 CEST 2018
2018-04-15T00:00:00.000Z//Sun Apr 15 00:00:00 CEST 2018
这是我的命名查询:
select count(u) from EntityPoll u where pollId = :pollId and FUNCTION('TRUNC', u.requestDate) > :startDate and FUNCTION('TRUNC', u.requestDate) < :endDate
这是我的hibernate生成的sql (返回0个元素):
select count(entitypoll0_.ID) as col_0_0_ from NEOL_ES_POLL entitypoll0_
where entitypoll0_.POLL_ID=?
and trunc(entitypoll0_.REQUEST_DATE)>?
and trunc(entitypoll0_.REQUEST_DATE)<?
这是相同的查询,但在SQL Developer中执行(5结果,确定):
select count(entitypoll0_.ID) as col_0_0_ from NEOL_ES_POLL entitypoll0_
where entitypoll0_.POLL_ID=1500541052868
and trunc(entitypoll0_.REQUEST_DATE) > TO_DATE('2018-04-13','yyyy-MM-dd')
and trunc(entitypoll0_.REQUEST_DATE) < TO_DATE('2018-04-15','yyyy-MM-dd');
无论如何,这最后一个查询有2个~date对象替换我的日历对象,但我找不到结果的差异。
我的道:
Query q = createNamedQuery(EntityPoll.SELECT_BY_POLLID);
q.setParameter("pollId", pollId);
q.setParameter("startDate", startDate, TemporalType.DATE);
q.setParameter("endDate", endDate, TemporalType.DATE);
try {
return ((Long) q.getSingleResult()).intValue();
这是我的数据表:
2141777690 1500541052868 14/04/18
2141777750 1500541052868 14/04/18
2141777810 1500541052868 14/04/18
2141777870 1500541052868 14/04/18
2141777930 1500541052868 14/04/18
2141778470 1500541052868 13/04/18
2141778590 1500541052868 13/04/18
2141778980 1500541052868 13/04/18
2141779010 1500541052868 13/04/18
2141779100 1500541052868 13/04/18
答案 0 :(得分:0)
好的,可能是错的,但是,代码中的一件事让我思考。在设置参数并在oracle中传递to_date
时,但在传递to_date(?, 'dd-mm-yyyy')
之类的参数时却没有。这里的第一个参数是字符串。至于差异,我不是你做的方式的粉丝。感谢