我有一个 Postgresql 列,它是一个 varchar,它正在保存一个看起来像'2 years, 5 months'
or'3 months'
或'9 years, 0 months
' 的字符串。我无法将列转换为间隔,因为它会破坏一堆现有的功能,所以我要做的是将该 varchar 转换为 select 语句中的间隔。我不知道该怎么做,我想我首先需要将其格式化为时间戳,然后将其转换为间隔?但无法找到有关此特定案例的任何信息。感谢您的帮助!
编辑 1:a_horse_with_no_name 的解决方案有效,但我之前因为空行而遇到错误,所以我写了一个这样的案例来修复它
case
when
duration = ''
then
interval '0'
else
duration::interval
end
如果这些值都遵循您显示的语法,您可以简单地将其转换为一个间隔: