timestamp()不将函数参数作为输入?

时间:2014-11-04 21:20:57

标签: sql postgresql plpgsql dynamic-sql

我在postgresql中使用sql

cast(col as timestamp($1))

它给出了参数

的错误

当我直接给出数字时,sql有效:

cast(col as timestamp(1))

所以时间戳不带功能参数吗?

1 个答案:

答案 0 :(得分:1)

precision modifier of the timestamp type name 类型的一部分,无法在纯SQL中进行参数化。即使括号中的语法看起来相同,也不是函数。

你需要动态SQL。在PL / pgSQL函数中,将语句构造为字符串并使用EXECUTE运行它。类似的东西:

EXECUTE 'SELECT col::timestamp(' || $1 || ')'
INTO my_var;

$1integer类型。不是像text那样的字符串类型,或者你有一个可能的SQL注入漏洞。