从字符串解析间隔的最佳方法是什么?

What's the best way to parse an interval from a string?

在 postgres 中从字符串 (varchar) 值获取间隔的最直接方法是什么?

我有一列包含 JSON 数据。 JSON 属性之一是 "runtime" 值,其格式如下:"runtime":"03s.684"。使用 JSON 函数,我可以毫无问题地获取运行时值,但随后我得到了带引号的字符串值。

我正在寻找类似于 to_timestamp() 的内容,因此我可以解析字符串,执行如下操作:

select to_interval('"03s.684"', '"SS\s.MS"'); --would like to do / this function doesn't exist

或者像这样的也不错:

select to_timestamp('"03s.684"', '"SS\s.MS"') :: interval; --also not valid

我认为应该可行的一种方法是将字符串转换为可以使用 regexp_replace() 转换为间隔的格式,但这似乎不是最佳方法。从自定义格式的时间字符串中获取间隔的推荐方法是什么?

您可以使用to_number()

SELECT to_number('3s.684', '999D9099') * '1 second'::interval;