Oracle 如何为已知字段上的已知值创建查询,已知日期介于2个未知日期之间)

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 >

任务是在指定字段中查找已知值。条件:有一个系统日期或我要使用的日期。此日期必须介于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 > '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遵循实体的结构,因此在不知道实体外观的情况下,很难为您提供帮助。请务必用英语发布您的问题,例如,您的问题中有一个单词“”。包括我在内的大多数用户都很难理解它。