#postgresql #jdbc #jdbctemplate
#postgresql #jdbc #jdbctemplate
Вопрос:
Мой запрос :
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);
но я получаю столбец вне диапазона.
Может кто-нибудь, пожалуйста, помочь?
Ответ №1:
Вы можете использовать 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,0,0,0,0,?)
AND userid = ?