[英]Prepared statement with date added by interval as parameter in Postgresql
[英]How to pass an interval parameter to a prepared statement?
我想删除我的 Postgres 数据库中早于 X 分钟的所有数据库条目。 我在 go 中准备好的语句如下所示:
delete
from my_table
where expires < (to_timestamp($1) - '$2 minutes'::interval);
如何正确传递第二个参数$2
?
PS:我知道有不同的语句可以解决这个问题,但我对如何传递引用的参数很感兴趣。
无法将参数插入字符串文字。
您的情况的可能解决方案是将一个数字乘以一个间隔:
where expires < (to_timestamp($1) - $2 * '1 minute'::interval)
你可以使用make_interval
delete from my_table
where expires < (to_timestamp($1) - make_interval(mins => $2));
您也可以参数化整个间隔字符串。 这消除了对text
和连接的中间转换的需要。
query := `
delete from my_table
where expires < (to_timestamp($1) - $2::interval);
`
interval := fmt.Sprintf("%d minutes", mins)
db.Exec(query, timestamp, interval)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.