我正在尝试编写一个node-postgres查询,该查询将一个整数用作区间中的参数作为参数:
const query = {
text:
`SELECT
foo
FROM bar
WHERE
DATE(created_at) >= DATE(NOW()) - INTERVAL '$1 DAYS';`,
values: [daysAgo]
}
当我运行它时,它会显示此错误消息,表明它没有看到$1
,因为它用单引号括起来:
绑定消息提供1个参数,但预备语句“”需要0
是否有支持的方式来执行此操作?如果没有,最好的工作是什么?
答案 0 :(得分:2)
我发现this reference表明您可以使用'1 DAY' * X
的约定。
我能够这样做:
(async () => {
const { rows } = await pgpool.query(`
SELECT id, name FROM users
WHERE DATE(created) <= DATE(NOW()) - INTERVAL '1 DAY' * $1;`,
[req.params.daysAgo]);