Postgresql

將 Varchar 轉換為區間

  • October 5, 2021

我有一個 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

如果這些值都遵循您顯示的語法,您可以簡單地將其轉換為一個間隔:

select '2 years, 5 months'::interval

引用自:https://dba.stackexchange.com/questions/300675