Oracle 如何为已知字段上的已知值创建查询,已知日期介于2个未知日期之间)
任务是在指定字段中查找已知值。条件:有一个系统日期或我要使用的日期。此日期必须介于2个日期(已知日期的字段)之间,也就是说,您需要检查数据库中的所有日期,+附加条件: 找到的字符串本身必须有一个先前已知的字段标记为空 下面是用Sql编写的代码Oracle 如何为已知字段上的已知值创建查询,已知日期介于2个未知日期之间),oracle,spring-boot,spring-data-jpa,spring-data,Oracle,Spring Boot,Spring Data Jpa,Spring Data,任务是在指定字段中查找已知值。条件:有一个系统日期或我要使用的日期。此日期必须介于2个日期(已知日期的字段)之间,也就是说,您需要检查数据库中的所有日期,+附加条件: 找到的字符串本身必须有一个先前已知的字段标记为空 下面是用Sql编写的代码 select b.* from nc_proc b where b.code_proc = 'S.2.2' and b.date_on >= '12-AUG-19' and b.d_off IS NULL and b.date_off >
select b.* from nc_proc b where b.code_proc = 'S.2.2' and b.date_on >= '12-AUG-19' and b.d_off IS NULL and b.date_off > '12-AUG-19';
“19年8月12日”是发送给我的一个变量(更准确地说,我从系统时间形成它)
第二条。2'是我得到的一个变量,它是主搜索
如何提出请求
下面是一个试图使
@Query(value = "SELECT b.* FROM nc_proc b WHERE b.code_proc = ?1 and b.date_on > ?2 and b.d_off IS NULL and b.date_off > ?2 ", nativeQuery = true)
List <NcProc> findByCodeProcList2 (String value, String systemDate);
@Query(value=“从nc_proc b中选择b.*,其中b.code_proc=?1和b.date_on>?2和b.d_off为空,b.date_off>?2”,nativeQuery=true)
列表findByCodeProcList2(字符串值、字符串systemDate);
这不管用
请告诉我怎么修理。是否可以不手动使用查询,而是使用内置关键字spring数据?那么这个选择会更好
更新
@Query(value = "SELECT b.* FROM nc_proc b WHERE b.code_proc = ?1 and ?2 b.date_on BETWEEN b.date_off and b.d_off IS NULL", nativeQuery = true)
List <NcProc> findByCodeProcList2 (String value, String systemDate);
@Query(value=“从nc_proc b中选择b.*,其中b.code_proc=?1和?2 b.date_on在b.date_关闭和b.d_关闭之间为空”,nativeQuery=true)
列表findByCodeProcList2(字符串值、字符串systemDate);
休眠:从nc_proc b中选择b.*,其中b.code_proc=?然后呢?
b、 b.date_off和b.d_off之间的date_on为空
11:02:58:871警告http-nio-8080-exec-1
o、 h.e.j.s.SqlExceptionHelper:137-SQL错误:920,SQLState:42000
19-ббббб-20 11:02:58:871错误http-nio-8080-exec-1
o、 h.e.j.s.SqlExceptionHelper:142-ORA-00920:无效的关系运算符
此外,我被告知,之间的包括左右限制,所需日期必须在指定的时间间隔内,并且不等于左右限制
更新
@Query(value = "SELECT b.* FROM nc_proc b WHERE b.code_proc = ?1 and ?2 b.date_on BETWEEN b.date_off and b.d_off IS NULL", nativeQuery = true)
List <NcProc> findByCodeProcList2 (String value, String systemDate);
这是工作
@Query(value = "select * from nc_proc where code_proc = ?1 " +
"and date_on <= TO_DATE(?2, 'yyyy-mm-dd HH24:MI:SS') " +
"and TO_DATE(?2, 'yyyy-mm-dd HH24:MI:SS ') < date_off " +
"and d_off IS NULL",
nativeQuery = true)
NcProc findByCodeProc(String codeProc, String systemDate);
@Query(value=“select*from nc\u proc,其中code\u proc=?1”+
“和date_on我在Spring方面帮不上忙,但对于您的问题,我想您需要的是:
SELECT b.* FROM nc_proc b WHERE b.code_proc = ?1 AND b.date_on > ?2 AND b.date_off < ?2 AND b.d_off IS NULL
从nc_proc b中选择b.*,其中b.code_proc=?1,b.date_on>?2,b.date_off<?2,b.d_off为空
你的问题不清楚日期是“19年8月12日”b.date\u on>“19年8月12日”b.date\u off
还是“19年8月12日”
。因此,你可能必须切换><运算符。我无法在Spring方面提供帮助,但对于你的查询,我想知道:
SELECT b.* FROM nc_proc b WHERE b.code_proc = ?1 AND b.date_on > ?2 AND b.date_off < ?2 AND b.d_off IS NULL
从nc_proc b中选择b.*,其中b.code_proc=?1,b.date_on>?2,b.date_off<?2,b.d_off为空
从您的问题中不清楚日期是在“19年8月12日”b.date\u on>“19年8月12日”b.date\u off
,还是在“19年8月12日”
上,因此您可能必须切换><运算符。您可以发布NcProc
实体的结构吗?编写JPQL时,您必须遵循您的实体,因此在不知道您的实体是什么样子的情况下,很难帮助您。请务必用英语发布您的问题,例如,您的问题中有单词Сббббббббббббббббббббб107e遵循实体的结构,因此在不知道实体外观的情况下,很难为您提供帮助。请务必用英语发布您的问题,例如,您的问题中有一个单词“”。包括我在内的大多数用户都很难理解它。