Недавно наткнулись на проблему с биндингом переменных с типом timestamp из Java.
Имеется вот такой запрос с одной bind-переменной:
select id from test where d_add > ? - interval '1 day'
На этапе парсинга запроса через prepareStatement выполнение программы падает со следующей ошибкой:
[Vertica][VJDBC](4286) ERROR: Operator does not exist: timestamp > interval(in seconds)
Решение проблемы оказалось достаточно простым, хоть и не совсем очевидным. Необходимо явно указать тип bind-переменной в запросе.
select id from test where d_add > ?::timestamp - interval '1 day'
Данная проблема возникает из-за того, что bind-переменная участвует в выражении вместе с interval. Если есть возможность убрать interval, это также решит проблему.