程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> oracle trunc()函數的使用方法,oracletrunc

oracle trunc()函數的使用方法,oracletrunc

編輯:Oracle教程

oracle trunc()函數的使用方法,oracletrunc


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

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()函數沒有秒的精確
 

Oracle的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.
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved