Java PreparedStatement设置间隔

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

sql语句中interval的正确转义是什么?

当前,我有以下代码可对customerId变量进行转义:

final String query = "delete from login_history where time < current_timestamp - '" + days + " days'::interval and customer_id = ?";
PreparedStatement preparedStatement = connection.prepareStatement(query);
preparedStatement.setInt(1, customerId);
int deleted = preparedStatement.executeUpdate();

但是我也想逃避days

java postgresql prepared-statement
2个回答
6
投票

"+ days +"替换?,将setInt更改为2而不是1,然后添加

preparedStatement.setWhateverTypeDaysIs(1, days);

0
投票

最好的解决方案是传递一个int参数乘以一个固定的间隔,例如]

select * from foo where (time + ? * INTERVAL '1' DAY) > current_timestamp

您可以放几天,几个小时...并且比setInt参数

© www.soinside.com 2019 - 2024. All rights reserved.