在sprinboot应用程序中使用三个字符串从oracledb获取数据列表

问题描述 投票:0回答:1

请下午好。请我转换以下查询

(select * from dispute_request_data d where d.arbiter = 'UNKNOWN' and to_date(to_char(tran_date, 'DD-MON-YYYY'), 'DD-MON-YYYY') between '01-Apr-2019' and '30-Apr-2019';) 

在sql编辑器上完美运行,并为此返回数据列表

(@Query(value= "select * from dispute_request_data d where d.arbiter = :processor and to_date(to_char(tran_date, 'DD-MON-YYYY'), 'DD-MON-YYYY') between to_date(:dateFrom,'DD-MON-YYYY') and to_date(:dateTo,'DD-MON-YYYY')",nativeQuery = true)
    List<DisputeRequest> findDisputeRequestByProcessorAndDateRange(@Param("processor") String processor,@Param("dateFrom") String dateFrom,@Param("dateTo") String dateTo);) 

但是它返回一个空列表。请帮助我...争议请求表上的tran_date列是一个时间戳,这就是为什么我尝试将其转换为date_date

spring oracle jpql
1个回答
0
投票

如果是日期或时间戳记,则应使用此类型。不要一次又一次地转换。现在,您的查询取决于国家日期设置,并且可能在不同的环境中失败。在查询中使用日期文字:

  where d.arbiter = 'UNKNOWN' 
    and date '2019-04-01' <= tran_date and tran_date < date '2019-05-01'

在您的应用程序中,将参数:dateFrom:dateTo发送为日期,而不是字符串,并将条件更改为:

  where d.arbiter = :processor 
    and :dateFrom <= tran_date and tran_date < :dateTo + 1
© www.soinside.com 2019 - 2024. All rights reserved.