秒轉為時分秒的oracle函式
阿新 • • 發佈:2019-02-17
create or replace function GETTIMEDESC(seconds in integer) return varchar2 is Result varchar2(100); begin Result := '1t'; if (seconds<24*3600) then select to_char(to_date(mod(seconds,3600*24),'sssss'),'fmhh24"小時"mi"分"ss"秒"') into Result from dual; else select trunc(seconds/3600/24) || '天' || to_char(to_date(mod(seconds,3600*24),'sssss'),'fmhh24"小時"mi"分"ss"秒"') into Result from dual; end if; return(Result); end GETTIMEDESC;
這個函式沒有太多的技術含量,記錄下來。網上找了好久,後來也是看一個答案,稍加改造而來
呼叫sql語句 select GETTIMEDESC(500000) m from dual;
好像又回去了,寫來寫去,感覺很簡單,但是網上就沒有這個現成的答案,簡單是事情我來做。
除錯了好久,發現上面的寫法是有問題的,換個寫法,搞了好久,實在是不成了,只好整個笨辦法,麻煩點,但肯定是對的。
create or replace function GETTIMEDESC(seconds in number) return varchar2 is Result varchar2(100); --DaySeconds number; TempSconds number; begin Result := ''; --DaySeconds := 24*3600; TempSconds := seconds; if (seconds is null) then return ''; end if; --天數 if (seconds>=86400) then Result := round(seconds/86400) || '天'; TempSconds := mod(seconds,86400); else Result := '0天'; end if; --小時 if (TempSconds>=3600) then Result := Result || round(TempSconds/3600) || '小時'; TempSconds := mod(TempSconds,3600); else Result := Result || '0小時'; end if; --分鐘 if (TempSconds>=60) then Result := Result || round(TempSconds/60) || '分鐘'; TempSconds := mod(TempSconds,60); else Result := Result || '0分鐘'; end if; Result := Result || to_char(round(TempSconds)) || '秒'; return(Result); end GETTIMEDESC;
對自己來說是個記錄,希望對需要的人能或多或少地幫助一點點