Как вставить 10 интервалов ’10 минут’ в массив объектов с помощью JdbcTemplate

#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 = ?