我需要更新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' ...
我在文档中找不到任何帮助......有什么建议吗?
由于
答案 0 :(得分:9)
试试这个:
update table1 set dateA = dateA + ( (interval '1 hours') * ? ) where id = ?;
或者这个:
update table1 set dateA = dateA + cast(? || ' hours' as interval) where id = ?;