PostgreSQL - 绑定变量和日期添加

azp*_*p74 7 postgresql

我需要更新Postgres(8.3)数据库中的表中的一些时间戳列.

我的查询(简化)如下所示:

update table1 set dateA = dateA + interval '10 hours' where id = 1234;
Run Code Online (Sandbox Code Playgroud)

这是脚本的一部分,需要更新很多,所以我的首选是使用绑定变量,而不是每次都要构建查询字符串.这意味着我的查询变为:

update table1 set dateA = dateA + interval '? hours' where id = ?;
Run Code Online (Sandbox Code Playgroud)

当我这样做时,抱怨是我只提供了2个绑定变量,只需要一个.

如果我试图把?外面的引号标记:

update table1 set dateA = dateA + interval ? ' hours' where id = ?;
Run Code Online (Sandbox Code Playgroud)

我明白了:

... syntax error at or near "' hours'"
Run Code Online (Sandbox Code Playgroud)

看起来好像查询已被解释为

... dateA = dateA + interval '10' ' hours' ...
Run Code Online (Sandbox Code Playgroud)

我在文档中找不到任何帮助......有什么建议吗?

谢谢

Mic*_*uen 10

试试这个:

update table1 set dateA = dateA + ( (interval '1 hours') * ? ) where id = ?;
Run Code Online (Sandbox Code Playgroud)

或这个:

update table1 set dateA = dateA + cast(? || ' hours' as interval) where id = ?;
Run Code Online (Sandbox Code Playgroud)