使用三个字符串从 spring boot 应用程序中的 oracle db 获取数据列表
Using three Strings to get a list of data from an oracledb in sprinboot application
下午好。请我转换以下查询
(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 编辑器和 returns 这个
的数据列表上完美运行
(@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);)
但它 returns 是一个空列表。请帮助我...争议请求 table 上的 tran_date 列是一个时间戳,这就是我尝试转换它的原因 to_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
Is there no way I can use the formatted string to get the data?
where d.arbiter = :processor
and to_date(:dateFrom, 'DD-Mon-YYYY', 'nls_date_language=english') <= tran_date
and tran_date < to_date(:dateTo, 'DD-Mon-YYYY', 'nls_date_language=english') + 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 编辑器和 returns 这个
的数据列表上完美运行(@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);)
但它 returns 是一个空列表。请帮助我...争议请求 table 上的 tran_date 列是一个时间戳,这就是我尝试转换它的原因 to_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
Is there no way I can use the formatted string to get the data?
where d.arbiter = :processor
and to_date(:dateFrom, 'DD-Mon-YYYY', 'nls_date_language=english') <= tran_date
and tran_date < to_date(:dateTo, 'DD-Mon-YYYY', 'nls_date_language=english') + 1