【发布时间】:2021-07-23 03:59:11
【问题描述】:
当我在 Datagrip 中使用参数值'14 days' 运行该查询时,它似乎是合法的
SELECT * FROM users WHERE users.updated_at < (CURRENT_DATE - INTERVAL $1)
但尝试在 slonik 中做类似的事情如下:
const interval='14 days'
// ...
const {rows} = await pool.query<any>(sql`
SELECT * FROM users WHERE users.updated_at < (CURRENT_DATE - INTERVAL ${interval}))
`)
似乎产生了相同的查询:"SELECT * FROM users WHERE updated_at < CURRENT_TIME - INTERVAL $1)",但是当我尝试执行池的 query 方法时会抛出 syntax error near "$1" 错误。
我尝试了几种变体,包括转义输入 const interval="'14 days'" 并为 INTERVAL 函数 (CURRENT_DATE - INTERVAL(${interval})) 添加括号,但错误结果相同。
不能以这种方式参数化 slonik 查询还是我在做一些愚蠢的事情?
【问题讨论】:
标签: postgresql node-postgres slonik