【轉】oracle內建函數 trunc 使用

來源:互聯網
上載者:User

標籤: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 使用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.