问题描述
我的查询是:
final String sSelectQuery = "SELECT COUNT(*) FROM ADMIN.SESSION_TBL WHERE lastmodified > (Now() - INTERVAL '"
+ userSessionExpireTime + " MINUTE') AND userid= ? ";
return getJdbcTemplate().queryForObject(sSelectQuery,new Object[]{userId},Integer.class);
在 userSessionExpireTime = 10 中的位置。 如果我想在不附加变量 userSessionExpireTime 并放置“?”的情况下实现相同的目标反而。 我怎样才能实现它?
我试过了:
SELECT COUNT(*) FROM ADMIN.SESSION_TBL WHERE lastmodified > (Now() - INTERVAL '? MINUTE') AND userid= ?
return getJdbcTemplate().queryForObject(sSelectQuery,new Object[]{userSessionExpireTime,userId},Integer.class);
但我得到的列超出范围。
有人可以帮忙吗?
解决方法
您可以使用make_interval()
SELECT COUNT(*)
FROM ADMIN.SESSION_TBL
WHERE lastmodified > NOW() - make_interval(mins => ?)
AND userid = ?
如果 Spring JDBC 模板在 =>
运算符上阻塞,请使用不带命名参数的变体:
SELECT COUNT(*)
FROM ADMIN.SESSION_TBL
WHERE lastmodified > NOW() - make_interval(0,?)
AND userid = ?