BaN*_*aN3 7 java sql oracle hibernate
我的查询是这样的
where (:startDate is null or :endDate is null or DDATE between :startDate AND :endDate)
AND (:startDate is null or (:endDate is not null or DDATE between :startDate AND :date))
Run Code Online (Sandbox Code Playgroud)
startDAte和endDate我从ajax日期选择器获取,但日期是系统日期,我得到这样的
Date utiDate = new Date();
Run Code Online (Sandbox Code Playgroud)
当我执行我的查询时,我得到错误
java.sql.SQLException: ORA-00932: inconsistent datatypes: expected DATE got BINARY
Run Code Online (Sandbox Code Playgroud)
为了找到正确的答案,我在这里发现了一篇有趣的帖子.
如果:endDate为null,则无法确定DDATE between :startDate AND :endDate不会评估条件.如果它被评估,Oracle将尝试将空值转换为日期,因此它会给你一个错误.
尝试测试删除DDATE between :startDate AND :endDate部件的查询:您不应该再有错误.然后,您将不得不修改您的查询,以确保between如果:enddate为null,则不会对运算符求值.在这篇文章中,他们建议CASE在WHERE子句中使用语句.也许它可以解决你的问题.
关于短路计算和Oracle数据库,我发现这个问题,可以帮助你理解这个问题.
| 归档时间: |
|
| 查看次数: |
16784 次 |
| 最近记录: |