Oracle数据库JPA Repository日期查询异常:String有效Date无效
问题根源与详细解释
嘿,这个问题的核心其实你已经在备注里点出来了,我帮你拆解清楚为什么两种查询方式结果会差这么多:
1. 直接的错误根源
你的getEntityUsingDate方法对应的SQL存在参数写错的低级问题:
BETWEEN :dateIni AND :dateIni
这里错误地把结束参数写成了:dateIni,而非正确的:dateEnd。这直接导致你的日期范围查询变成了仅匹配dateIni这个精确时间点的记录,完全偏离了你预期的“当天全天范围”查询逻辑。
2. 两种查询的差异原因
getEntityUsingString能正常返回结果:你构造的stringIni(当天00:00:00)和stringEnd(当天23:59:59)是正确的时间范围,通过TO_DATE转换后,SQL实际查询的是当天完整的时间区间,自然能匹配到所有当天注册的记录。getEntityUsingDate无结果且无报错:因为SQL参数错误,实际执行的是HCODFECREGISTR BETWEEN '当天00:00:00' AND '当天00:00:00'——也就是只找注册时间刚好等于00:00:00的记录。除非你的数据里恰好有这个时间点的注册数据,否则必然返回空;又因为SQL语法本身没有问题,所以不会抛出任何异常。
3. 修复方案
只需要修正getEntityUsingDate对应的SQL语句,把第二个:dateIni替换成:dateEnd即可:
-- 修正后的SQL BETWEEN :dateIni AND :dateEnd
这样就能和getEntityUsingString一样,查询当天00:00:00到23:59:59的所有目标记录了。
内容的提问来源于stack exchange,提问作者joseluisbz
相关产品推荐
相关产品推荐

