trunc 是 truncate 的簡寫。
中文翻譯是 「截斷」或 「截短」。
表面看上去,應該是對字串或是數字進行擷取。 實際上這個函式有兩種用法, 而且這兩種用法看上去很不一樣。
1. 對 number 型別使用。其工作機制與round函式極為類似,只是該函式不對指定小數前或後的部分做相應捨入選擇處理,而統統截去。
2. 對日期型別使用。
語法格式:
trunc(number[,decimals])
--number 待做擷取處理的數值
--decimals 指明需保留小數點後面的位數。可選項,忽略它則截去所有的小數部分。
需要特別注意的是, 這個引數可以為負數,表示為小數點左邊指定位數後面的部分以 0 替換。比如 trunc(123.456789,-1) = 120
使用例項:
1) decimals 不設定,截去所有小數部分
select trunc(123.456789) from dual;
返回 : 123
2) 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月-13
2. 返回本週星期日
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
1 做日期格式轉換 select trunc sysdate from dual 2020 07 16,時間格式的年月日 select trunc sysdate,yy from dual 2020 1 1,返回當年第一天 select trunc sysdate,mm from dual 2020...
oracle函式trunc的使用
oracle函式trunc的使用 1 日期比較時精確到日,可以使用 trunc sysdate,dd 函式。函式支援格式有 yyyy mm dd hh mi 可以用 select trunc sysdate,yyyy from dual 看看結果是什麼。不要按下面的方式比較日期 to date to...
oracle函式trunc的使用
1 日期比較時精確到日,可以使用 trunc sysdate,dd 函式。函式支援格式有 yyyy mm dd hh mi 可以用 select trunc sysdate,yyyy from dual 看看結果是什麼。不要按下面的方式比較日期 to date to char logtime,yyy...