oracle數學函數
oracle trunc()函數的用法.
1.TRUNC函數為指定元素而截去的日期值。
其具體的語法格式如下:TRUNC(date[,fmt])
其中:
date 一個日期值
fmt 日期格式,該日期將由指定的元素格式所截去。忽略它則由最近的日期截去
下面是該函數的使用情況:
?? select trunc(sysdate,'mm')from dual --2007-1-1:當月第一天
?? select trunc(sysdate,'yy')from dual --2007-1-1:當年第一天
?? select trunc(sysdate,'dd')from dual --2007-1-14:當天
?? select trunc(sysdate,'day')from dual --2007-1-15:當周第一天
?? select trunc(sysdate)from dual????? --2007-1-15:當天
????? 說明:trunc(sysdate)輸出的格式為YYYY-MM-DD,但它是把時間四舍五入到了當日的零點,
?????????? 即:to_char(trunc(sysdate),'YYYY-MM-DD HH24:mi:ss pm|am') = YYYY-MM-DD 00:00:00 上午
?? 比較下面三個的不同:
?? select last_day(sysdate)+2 from dual;??????????????? --2007-2-2 19:07:52
?? select (last_day(sysdate)+2)+10/24 from dual;??????? --2007-2-3 5:07:18
?? select trunc(last_day(sysdate)+2)+10/24 from dual;?? --2007-2-2 10:00:00
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’
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記。
select nvl(alloffinum,offinum) 網元名稱,
????????? sum(decode(checkflag,'A',1,0)) 未制作,???? sum(decode(checkflag,'B',1,0)) 制作中,
????????? sum(decode(checkflag,'C',1,0)) 成功,?????? sum(decode(checkflag,'E',1,0)) 人工成功,
????????? sum(decode(checkflag,'G',1,0)) 成功回籠,sum(decode(checkflag,'I',1,0)) 人工回籠,
????????? sum(decode(checkflag,'F',1,0)) 退單回籠,sum(decode(checkflag,'H',1,0)) 失敗,
????????? sum(decode(checkflag,'D',1,0)) 退單,?????? sum(decode(checkflag,'K',1,0)) 保護,
????????? sum(decode(checkflag,'J',1,0)) 禁止 from sheet_control
????????? where areano='0378' and stationno like '%'
???? and intime >=trunc(sysdate)
?????? group by nvl(alloffinum,offinum)
round函數
round函數用于求出并返回最接近給定參數value值的整數值。如果兩個整數都和value值等距離,那么round函數將返回較大的那個整數值。
如果value是一個整數,則返回的就是value本身。round函數的語法格式為:
float.round(value)
如果參數value的值不是有效的數,那么round函數就會返回無效值invalid。
使用round函數的例子如下:
var a = float.round(3.5);????????????????????????? // 計算結果為a = 4;4和3與3.5等距離,取較大的數4。
var b = float.round(-3.5);??????????????????????? // 計算結果為b = -3
var c = float.round(0.5);????????????????????????? // 計算結果為c = 1;1和0與0.5等距離,取較大的數1。
var d = float.round(-0.5);??????????????????????? // 計算結果為d = 0
在oracle中,用法:mod(number1,number2)
???? 描述??
???? 兩個數值相除并返回其余數。??
???? 語法??
???? result????? =????? number1????? Mod????? number2??
???? Mod????? 運算符的語法有以下部分:??
???
???? 部分????? 描述????
???? result????? 任意數值變量。????
???? number1????? 任意數值表達式。????
???? number2????? 任意數值表達式。??????
???
???
???? 說明??
???? 模數或余數。運算符執行????? number1????? 除以????? number2????? 操作(浮點數四舍五入為整數)并只返回余數作為????? result。例如,在下面的表達式中,????? A(為????? result)等于????? 5。??
???
???? A????? =????? 19????? Mod????? 6.7??
???
???? 如果任一表達式為????? Null,則????? result????? 也為????? Null。任一表達式為????? Empty????? 時按????? 0????? 來處理。??
???? --------------------------------------------------------------------------------??
0.5 mod 8 =0
1.5 mod 8 =2
0.6 mod 8=1
1.6 mod 8=2
4.5 mod 8=4
6.5 mod 8=6
6.6 mod 8=7
7.4 mod 8=7
7.5 mod 8=0
8.4 mod 8=0
8.5 mod 8=0
8.6 mod 8=1
被除數四舍五入之后再取模
Round 函數都是采用 Banker's rounding(銀行家舍入)算法,即四舍六入五取偶
四舍六入五取偶
round(3.5) mod round(8) 等于 4 mod 8
round(4.5) mod round(8) 等于 4 mod 8
round(5.5) mod round(8) 等于 6 mod 8
1.TRUNC函數為指定元素而截去的日期值。
其具體的語法格式如下:TRUNC(date[,fmt])
其中:
date 一個日期值
fmt 日期格式,該日期將由指定的元素格式所截去。忽略它則由最近的日期截去
下面是該函數的使用情況:
?? select trunc(sysdate,'mm')from dual --2007-1-1:當月第一天
?? select trunc(sysdate,'yy')from dual --2007-1-1:當年第一天
?? select trunc(sysdate,'dd')from dual --2007-1-14:當天
?? select trunc(sysdate,'day')from dual --2007-1-15:當周第一天
?? select trunc(sysdate)from dual????? --2007-1-15:當天
????? 說明:trunc(sysdate)輸出的格式為YYYY-MM-DD,但它是把時間四舍五入到了當日的零點,
?????????? 即:to_char(trunc(sysdate),'YYYY-MM-DD HH24:mi:ss pm|am') = YYYY-MM-DD 00:00:00 上午
?? 比較下面三個的不同:
?? select last_day(sysdate)+2 from dual;??????????????? --2007-2-2 19:07:52
?? select (last_day(sysdate)+2)+10/24 from dual;??????? --2007-2-3 5:07:18
?? select trunc(last_day(sysdate)+2)+10/24 from dual;?? --2007-2-2 10:00:00
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’
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記。
select nvl(alloffinum,offinum) 網元名稱,
????????? sum(decode(checkflag,'A',1,0)) 未制作,???? sum(decode(checkflag,'B',1,0)) 制作中,
????????? sum(decode(checkflag,'C',1,0)) 成功,?????? sum(decode(checkflag,'E',1,0)) 人工成功,
????????? sum(decode(checkflag,'G',1,0)) 成功回籠,sum(decode(checkflag,'I',1,0)) 人工回籠,
????????? sum(decode(checkflag,'F',1,0)) 退單回籠,sum(decode(checkflag,'H',1,0)) 失敗,
????????? sum(decode(checkflag,'D',1,0)) 退單,?????? sum(decode(checkflag,'K',1,0)) 保護,
????????? sum(decode(checkflag,'J',1,0)) 禁止 from sheet_control
????????? where areano='0378' and stationno like '%'
???? and intime >=trunc(sysdate)
?????? group by nvl(alloffinum,offinum)
round函數
round函數用于求出并返回最接近給定參數value值的整數值。如果兩個整數都和value值等距離,那么round函數將返回較大的那個整數值。
如果value是一個整數,則返回的就是value本身。round函數的語法格式為:
float.round(value)
如果參數value的值不是有效的數,那么round函數就會返回無效值invalid。
使用round函數的例子如下:
var a = float.round(3.5);????????????????????????? // 計算結果為a = 4;4和3與3.5等距離,取較大的數4。
var b = float.round(-3.5);??????????????????????? // 計算結果為b = -3
var c = float.round(0.5);????????????????????????? // 計算結果為c = 1;1和0與0.5等距離,取較大的數1。
var d = float.round(-0.5);??????????????????????? // 計算結果為d = 0
在oracle中,用法:mod(number1,number2)
???? 描述??
???? 兩個數值相除并返回其余數。??
???? 語法??
???? result????? =????? number1????? Mod????? number2??
???? Mod????? 運算符的語法有以下部分:??
???
???? 部分????? 描述????
???? result????? 任意數值變量。????
???? number1????? 任意數值表達式。????
???? number2????? 任意數值表達式。??????
???
???
???? 說明??
???? 模數或余數。運算符執行????? number1????? 除以????? number2????? 操作(浮點數四舍五入為整數)并只返回余數作為????? result。例如,在下面的表達式中,????? A(為????? result)等于????? 5。??
???
???? A????? =????? 19????? Mod????? 6.7??
???
???? 如果任一表達式為????? Null,則????? result????? 也為????? Null。任一表達式為????? Empty????? 時按????? 0????? 來處理。??
???? --------------------------------------------------------------------------------??
0.5 mod 8 =0
1.5 mod 8 =2
0.6 mod 8=1
1.6 mod 8=2
4.5 mod 8=4
6.5 mod 8=6
6.6 mod 8=7
7.4 mod 8=7
7.5 mod 8=0
8.4 mod 8=0
8.5 mod 8=0
8.6 mod 8=1
被除數四舍五入之后再取模
Round 函數都是采用 Banker's rounding(銀行家舍入)算法,即四舍六入五取偶
四舍六入五取偶
round(3.5) mod round(8) 等于 4 mod 8
round(4.5) mod round(8) 等于 4 mod 8
round(5.5) mod round(8) 等于 6 mod 8
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
