代码之家  ›  专栏  ›  技术社区  ›  azp74

PostgreSQL-绑定变量和日期添加

  •  7
  • azp74  · 技术社区  · 16 年前

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

    我的查询(简化)如下:

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

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

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

    当我这样做的时候,抱怨的是当只需要一个绑定变量时,我已经提供了两个绑定变量。

    如果我试着把 ? 在引号之外:

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

    我得到:

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

    看起来查询被解释为

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

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

    谢谢

    1 回复  |  直到 16 年前
        1
  •  9
  •   Michael Buen    16 年前

    试试这个:

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

    或者:

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