繁体   English   中英

Java PreparedStatement 设置间隔

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM