Интервал arg в запросе postgres, выполненном через Golang SQLX
У меня есть следующий оператор 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, но передавая аргументы Exec(..)
где :interval
это Голанг time.Duration
вызывает панику
Как интервал должен быть указан в качестве аргумента таким образом?
1 ответ
Если с 2013 года ничего не изменилось, это WontFix https://github.com/golang/go/issues/4954 с предложенным решением для реализации sql.Scanner
а также driver.Valuer
Тем не менее, для моего случая использования я обнаружил, что просто сделать аргумент string
и звонит time.Duration.String()
работает. Я работаю только с секундами и проверил только в этом диапазоне, так что YMMV.