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

使用sqlc生成DB方法时,如何正确传递INTERVAL参数?

解决sqlc中动态传入时间间隔参数的问题

正确的SQL写法

直接将数字参数与单位为秒的interval进行乘法运算,避免引号和语法错误:

DELETE FROM demotable
WHERE last_updated < NOW() - INTERVAL '1 second' * $1;

为什么这个写法可行

  • 数据库层面:INTERVAL '1 second'是固定的时间间隔常量,乘以参数$1(数字类型)后,会得到对应秒数的时间间隔,语法完全合法,不需要给参数加引号。
  • sqlc层面:会自动将$1识别为数值类型(比如Go中的int),生成的代码可以直接传入数字参数,不会被解析为字符串。

验证示例

当你传入参数30时,语句等价于NOW() - INTERVAL '30 second',和你最初的需求完全匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 09:29:53