我在postgresql中使用sql
cast(col as timestamp($1))
它给出了参数
的错误当我直接给出数字时,sql有效:
cast(col as timestamp(1))
所以时间戳不带功能参数吗?
答案 0 :(得分:1)
precision modifier of the timestamp
type是 name 类型的一部分,无法在纯SQL中进行参数化。即使括号中的语法看起来相同,也不是函数。
你需要动态SQL。在PL / pgSQL函数中,将语句构造为字符串并使用EXECUTE
运行它。类似的东西:
EXECUTE 'SELECT col::timestamp(' || $1 || ')'
INTO my_var;
$1
是integer
类型。不是像text
那样的字符串类型,或者你有一个可能的SQL注入漏洞。