標籤:style blog http ar color os 使用 sp on
原文連結 http://blog.csdn.net/oscar999/article/details/16839417
前言 trunc 是 truncate 的簡寫。中文翻譯是 “截斷”或 “截短”。表面看上去,應該是對字串或是數字進行截取。 實際上這個函數有兩種用法, 而且這兩種用法看上去很不一樣。1. 對 number 類型使用。其工作機制與ROUND函數極為類似,只是該函數不對指定小數前或後的部分做相應舍入選擇處理,而統統截去。2. 對日期類型使用。對 number 類型使用文法格式:TRUNC(number[,decimals]) --number 待做截取處理的數值 --decimals 指明需保留小數點後面的位元。可選項,忽略它則截去所有的小數部分。 需要特別注意的是, 這個參數可以為負數,表示為小數點左邊指定位元後面的部分以 0 替換。比如 TRUNC(123.456789,-1) = 120使用執行個體:1) decimals 不設定,截去所有小數部分select TRUNC(123.456789) from dual; 返回 : 1232) decimals 設定為正整數select TRUNC(123.456789,2) from dual; 返回 123.45比較使用ROUND的狀況:select ROUND(123.456789,2) from dual; 返回 123.46 (四捨五入了)3) decimals 設定為負整數select TRUNC(123.456789,-1) from dual; 返回: 120 (最後一位從 3 變成 0 了)4) decimals 設定為小數select TRUNC(123.456789,2.8) from dual; select TRUNC(123.456789,2.4) from dual;返回: 123.45看上去decimals可以設定成小數,只是小數部分完全忽略,設定小數沒什麼意義。( 但是如果這個參數部分是計算出來的小數,就沒有必要做類型轉換)對日期類型使用文法格式:TRUNC(date[,fmt]) date 一個日期值fmt 日期格式,該日期將由指定的元素格式所截取。忽略它則由最近的日期截取這個函數的使用解釋應該是: 返回日期date所在期間(參數fmt)的第一天日期fmt: 對應的參數表:本周星期日:day或dy或d (每周順序:日,一,二,三,四,五,六)本月初日期:month或mon或mm或rm本季日期:q本年初日期:syear或year或yyyy或yyy或yy或y(多個y表示精度) 本世紀初日期:cc或scc【返回】:日期使用執行個體:(以當前日期 sysdate 為例)1. 取得當前日期select trunc(sysdate) from dual; select trunc(sysdate ,‘DD‘) from dual; 返回: 20-11月-132. 返回本周星期日select trunc(sysdate,‘d‘) from dual; 因為西方國家是從周日為一周的開始, 對於中國來說, 這個返回的其實是上周的周末。如果要得到中國習慣的本周末的話, 就要加上 7 天了。select trunc(sysdate,‘d‘)+7 from dual; 類似的用法還可以用:select trunc(sysdate,‘dy‘)+7 from dual; select trunc(sysdate,‘day‘)+7 from dual; 3. 返回本季的開始時間select trunc(sysdate,‘q‘) from dual; 4. 返回本月開始時間select trunc(sysdate,‘month‘) from dual; select trunc(sysdate ,‘mm‘) from dual; 5. 本年開始時間select trunc(sysdate,‘year‘) from dual; select trunc(sysdate ,‘yyyy‘) from dual; 6.本小時開始時間select trunc(sysdate ,‘HH24‘) from dual; 返回當天的日期7. 本分鐘開始時間select trunc(sysdate ,‘MI‘) from dual; 同樣返回當天的日期其他1. 注意, 不能對string 類型來使用這個函數:select TRUNC(‘abcdef‘,2) from dual; 這種用法是錯誤的。但是, 一下這樣卻是可以的:select TRUNC(‘123.456789‘,2) from dual; 個中差別, 應該不難理解^^2. 這裡頻繁使用到dual 這張表:dual是一個虛擬表,用來構成select的文法規則,oracle保證dual裡面永遠只有一條記錄。
[
【轉】oracle內建函數 trunc 使用