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。
用"+ days +"
替换?
,将setInt
更改为2而不是1,然后添加
preparedStatement.setWhateverTypeDaysIs(1, days);
最好的解决方案是传递一个int参数乘以一个固定的间隔,例如]
select * from foo where (time + ? * INTERVAL '1' DAY) > current_timestamp
您可以放几天,几个小时...并且比setInt
参数