--將用小數(shù)形式表示的 日期時間 轉化為 天-小時-分鐘-秒 的形式 function fmt_time (p_days in number) return varchar2 as l_days number; l_hours number; l_minutes number; l_seconds number; l_sign varchar2(1); l_returnvalue string_util_pkg.t_max_pl_varchar2; begin /* Purpose: get time formatted as days, hours, minutes, seconds Remarks: Who Date Description ------ ---------- ------------------------------------- MBR 18.12.2006 Created */ --通過傳入的 日期獲得相應的 各個單位數(shù)據(jù) --整數(shù)部分為 天 l_days := nvl(trunc(p_days),0); --小數(shù)部分 *24 得到小時 l_hours := nvl(((p_days - l_days) * 24), 0); --獲得的小時 數(shù)據(jù)的小數(shù)部分 *60 為分鐘 l_minutes := nvl(((l_hours - trunc(l_hours))) * 60, 0); --同樣的 將獲得的 分鐘的小數(shù)部分*60 為秒 l_seconds := nvl(((l_minutes - trunc(l_minutes))) * 60, 0); --判斷日期正負 符號 if p_days < 0 then l_sign:='minus '; else l_sign:=''; end if; --將得到的數(shù)據(jù) 進行格式化 絕對值是為了進行必要的 去除正負號判定 --獲得天的絕對值 l_days:=abs(l_days); --獲得小時的絕對值 同時獲得其整數(shù)部分 l_hours:=trunc(abs(l_hours)); --去取分鐘的絕對值 然后四舍五入 l_minutes:=round(abs(l_minutes)); --去取秒的絕對值 然后四舍五入 l_seconds:=round(abs(l_seconds)); --如果分鐘 為60 為什么會出現(xiàn)這種情況呢? 這是因為有了四舍五入和小數(shù) 不精確所致 if l_minutes = 60 then --則 讓小時+1 同時分鐘置空 l_hours:=l_hours + 1; l_minutes:=0; end if; --將得到的結果 進行格式化
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com