请下午好。请我转换以下查询
(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
如果是日期或时间戳记,则应使用此类型。不要一次又一次地转换。现在,您的查询取决于国家日期设置,并且可能在不同的环境中失败。在查询中使用日期文字:
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