You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Hasura原生SQL参数绑定错误:interval语法无效问题排查

解决Hasura原生SQL查询中integer参数构造interval的语法错误

问题根源

你错误地用字符串插值风格的写法构造PostgreSQL的interval值,而Hasura的参数绑定机制会将{{number_of_days}}替换为参数占位符(如($2)::integer),最终生成的字符串"%(($2)::integer)s days"不符合PostgreSQL的interval语法规范,导致解析失败。

正确解决方案

无需修改参数类型,保持number_of_days为integer类型,改用PostgreSQL支持的两种合法方式构造interval:

方式1:整数乘以基础interval单位

直接将参数与interval '1 day'相乘,这是PostgreSQL支持的数值与interval运算:

WHERE d.time >= CURRENT_DATE - ({{number_of_days}} * interval '1 day')

方式2:使用make_interval函数

PostgreSQL的make_interval函数可直接接收整数类型的days参数:

WHERE d.time >= CURRENT_DATE - make_interval(days => {{number_of_days}})

验证修改

保持你的GraphQL查询不变:

query MyQuery {
  PR_Timelinedaily_site_locations(args: {number_of_days: 3}) {
    max_val
    min_val
    forecast_val
    date
  }
}

修改原生SQL的WHERE子句后,即可正常执行查询,不会再出现interval语法错误。

内容的提问来源于stack exchange,提问作者Vinay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 10:50:56