通过Golang SQLX执行的postgres查询中的间隔arg

问题描述 投票:-1回答:1

我有以下SQL语句

INSERT INTO scheduled_event_log ("key")
SELECT :key WHERE NOT EXISTS( SELECT AGE(now() at time zone 'utc', timestamp_utc)
FROM scheduled_event_log
WHERE "key" = :key
    AND age(now() at time zone 'utc', timestamp_utc) < :interval limit 1 );

:interval是Postgres间隔类型。我使用sqlx将其作为命名语句准备,但将args传递给Exec(..),其中:interval是Golang time.Duration引起恐慌。

应该如何以这种方式将间隔指定为参数?

postgresql go sqlx
1个回答
1
投票

除非自2013年以来发生任何变化,否则这是一个WontFix https://github.com/golang/go/issues/4954,建议的解决方案是实施sql.Scannerdriver.Valuer

但是,对于我的用例,我发现只需将参数设为string并调用time.Duration.String()即可。我只用秒工作,只测试了这个范围,所以YMMV。

© www.soinside.com 2019 - 2024. All rights reserved.