PostgreSQL - связывание переменных и добавление даты - PullRequest
7 голосов
/ 11 мая 2010

Мне нужно обновить некоторые столбцы меток времени в таблице в базе данных Postgres (8.3).

Мой запрос (упрощенный) выглядит так:

update table1 set dateA = dateA + interval '10 hours' where id = 1234;

Это часть скрипта, и есть много чего обновить, поэтому я предпочитаю использовать переменные связывания, а не каждый раз создавать строку запроса. Это означает, что мой запрос становится:

update table1 set dateA = dateA + interval '? hours' where id = ?;

Когда я делаю это, я жалуюсь, что я предоставил 2 переменные связывания, когда требуется только одна.

Если я попытаюсь поставить ? вне кавычек:

update table1 set dateA = dateA + interval ? ' hours' where id = ?;

Я получаю:

... syntax error at or near "' hours'"

Похоже, что запрос был интерпретирован как

... dateA = dateA + interval '10' ' hours' ...

Я не могу найти в документации ничего, что могло бы помочь ... какие-либо предложения?

Спасибо

1 Ответ

9 голосов
/ 11 мая 2010

Попробуйте это:

update table1 set dateA = dateA + ( (interval '1 hours') * ? ) where id = ?;

Или это:

update table1 set dateA = dateA + cast(? || ' hours' as interval) where id = ?;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...