PostgreSQL - 绑定变量和日期添加

时间:2010-05-11 06:01:55

标签: postgresql

我需要更新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 个答案:

答案 0 :(得分:9)

试试这个:

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

或者这个:

update table1 set dateA = dateA + cast(? || ' hours' as interval) where id = ?;