[英]Java PreparedStatement set interval
sql语句中间隔的正确转义是什么?
目前我有以下代码可以转义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 +"
替换为?
, 将setInt
更改为 2 而不是 1 并添加
preparedStatement.setWhateverTypeDaysIs(1, days);
最好的解决办法是传递一个int参数乘以一个固定的间隔Eg
select * from foo where (time + ? * INTERVAL '1' DAY) > current_timestamp
你可以放几天、几小时……而不是setInt
参数
您可以在 SQL 文本中使用?::interval
并使用 setString() 之类的
setString(1, "30 minutes")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.