oracle trunc()函數是最常用的函數之一,下面就為您介紹oracle trunc()函數的用法,供您參考,希望可以讓您對oracle trunc()函數有更深的認識。
1.TRUNC(for dates)
TRUNC函數為指定元素而截去的日期值。
其具體的語法格式如下:
TRUNC(date[,fmt])
其中:
date一個日期值
fmt 日期格式,該日期將由指定的元素格式所截去。忽略它則由最近的日期截去
下面是該函數的使用情況:
TRUNC(TO_DATE('24-Nov-1999 08:00 pm','dd-mon-yyyy hh:mi am'))
='24-Nov-1999 12:00:00 am'
TRUNC(TO_DATE('24-Nov-1999 08:37 pm','dd-mon-yyyy hh:mi am','hh'))='24-Nov-1999 08:00:00 am'
round (date,'format')未指定format時,如果日期中的時間在中午之前,則將日期中的時間截斷為12 A.M.(午夜,一天的開始),否則進到第二天。
TRUNC(date,'format')未指定format時,將日期截為12 A.M.,不考慮是否在中午之前的條件。
2.TRUNC(for number)
TRUNC函數返回處理後的數值,其工作機制與ROUND函數極為類似,只是該函數不對指定小數前或後的部分做相應捨入選擇處理,而統統截去。
其具體的語法格式如下
TRUNC(number[,decimals])
其中:
number待做截取處理的數值
decimals指明需保留小數點後面的位數。可選項,忽略它則截去所有的小數部分
下面是該函數的使用情況:
TRUNC(89.985,2)=89.98
TRUNC(89.985)=89
TRUNC(89.985,-1)=80
注意:第二個參數可以為負數,表示為小數點左邊指定位數後面的部分截去,即均以0記。
以上oracle trunc()函數的用法介紹。
Oracle trunc()函數的實例:
--Oracle trunc()函數的用法 /**************日期********************/ 1.select trunc(sysdate) from dual --2011-3-18 今天的日期為2011-3-18 2.select trunc(sysdate, 'mm') from dual --2011-3-1 返回當月第一天. 3.select trunc(sysdate,'yy') from dual --2011-1-1 返回當年第一天 4.select trunc(sysdate,'dd') from dual --2011-3-18 返回當前年月日 5.select trunc(sysdate,'yyyy') from dual --2011-1-1 返回當年第一天 6.select trunc(sysdate,'d') from dual --2011-3-13 (星期天)返回當前星期的第一天 7.select trunc(sysdate, 'hh') from dual --2011-3-18 14:00:00 當前時間為14:41 8.select trunc(sysdate, 'mi') from dual --2011-3-18 14:41:00 TRUNC()函數沒有秒的精確 /***************數字********************/ /* TRUNC(number,num_digits) Number 需要截尾取整的數字。 Num_digits 用於指定取整精度的數字。Num_digits 的默認值為 0。 TRUNC()函數截取時不進行四捨五入 */ 9.select trunc(123.458) from dual --123 10.select trunc(123.458,0) from dual --123 11.select trunc(123.458,1) from dual --123.4 12.select trunc(123.458,-1) from dual --120 13.select trunc(123.458,-4) from dual --0 14.select trunc(123.458,4) from dual --123.458 15.select trunc(123) from dual --123 16.select trunc(123,1) from dual --123 17.select trunc(123,-1) from dual --120
1.select trunc(sysdate) from dual --2011-3-18 今天的日期為2011-3-18
2.select trunc(sysdate, 'mm') from dual --2011-3-1 返回當月第一天.
3.select trunc(sysdate,'yy') from dual --2011-1-1 返回當年第一天
4.select trunc(sysdate,'dd') from dual --2011-3-18 返回當前年月日
5.select trunc(sysdate,'yyyy') from dual --2011-1-1 返回當年第一天
6.select trunc(sysdate,'d') from dual --2011-3-13 (星期天)返回當前星期的第一天
7.select trunc(sysdate, 'hh') from dual --2011-3-18 14:00:00 當前時間為14:41
8.select trunc(sysdate, 'mi') from dual --2011-3-18 14:41:00 TRUNC()函數沒有秒的精確
第一個問題 如果y是負數,則對x在小數點左邊的第|y|位處進行截斷,例如:TRUNC(5.75, -1)=0 5.75 看成 0005.75.000 從小數點左邊第一位往左邊截,不是0嗎
第二個問題,例如:ROUND(5.75)=6,表示對5.75在0位小數處進行取整,這裡0位小數是7? 0位小數是沒有,不是7, 7是第一位小數了。
5.75取整 就是6啊,是四捨五入了啊,要不 round和trunc就沒區別了嘛。
ROUND(5.75, 1)=5.8,這裡第1位小數是5? 不是,第一位小數是7 四捨五入就是 5.8
ROUND(5.75, -1)=10,對5.75在左邊第|-1|位取整,左邊第一位就是十位? 小數點左邊第一位是個位,你同樣看成 00005.75000, 從個位的左邊開始取,並四捨五入。 個位是5 左邊的十位是0, 由於5是進1的,所以是10.