--ROUND
--如果对年四舍五入,就保留到10年的1月1日上去了
SQL> select round(to_date('20100611','yyyymmdd'),'year') from dual;
ROUND(TO_DATE(
--------------
01-1月 -10
--7月份四舍五入,入到下一年。
SQL> select round(to_date('20100711','yyyymmdd'),'year') from dual;
ROUND(TO_DATE(
--------------
01-1月 -11
--如果对月份四舍五入就保留到6月1号上去了
SQL> select round(to_date('20100611','yyyymmdd'),'month') from dual;
ROUND(TO_DATE(
--------------
01-6月 -10
--6月21号四舍五入舍到7月1日
SQL> select round(to_date('20100621','yyyymmdd'),'month') from dual;
ROUND(TO_DATE(
--------------
01-7月 -10
--NEXT_DAY
--TRUNC
--使用trunc截断年,就变成2010年1月1号(无论是6月还是12月)
SQL> select trunc(to_date('20100621','yyyymmdd'),'year') from dual;
TRUNC(TO_DATE(
--------------
01-1月 -10
SQL> select trunc(to_date('20101221','yyyymmdd'),'year') from dual;
TRUNC(TO_DATE(
--------------
01-1月 -10
按照日期trunc直接变成6月1号,无论日期多大。
SQL> select trunc(to_date('20100621','yyyymmdd'),'month') from dual;
TRUNC(TO_DATE(
--------------
01-6月 -10
--EXTRACT
数字函数
数字函数接受数字输入并返回数值结果
函数 | 输入 | 输出 |
Abs(n) | Select abs(-15) from dual; | 15 |
Ceil(n) | Select ceil(44.778) from dual; | 45 |
Cos(n) | Select cos(180) from dual; | -.59846007 |
Cosh(n) | Select cosh(0) from dual; | 1 |
Floor(n) | Select floor(100.2) from dual; | 100 |
Power(m,n) | Select power(4,2) from dual; | 16 |
Mod(m,n) | Select mod(10,3) from dual; | 1 |
Round(m,n) | Select round(100.256,2) from dual; | 100.26 |
Trunc(m,n) | Select trunc(100.256,2) from dual; | 100.25 |
Sqrt(n) | Select sqrt(4) from dual; | 2 |
Sign(n) | Select sign(-30) from dual; | -1 |
1、ABS(n)函数:返回数字的绝对值
select ABS(-7) FROM DUAL
结果:7
2、SIGN(x)函数:检测x的正负.如果x<0返回-1.如果x=0返回0.如果x>0返回1.
select SIGN(-7) FROM DUAL
结果:-1
3、CEIL(n)函数:返回大于或等于n的最小的整数值
select CEIL(1.3) FROM DUAL
结果:2
4、FLOOR(n)函数:返回小于或等于n的最大的整数值
select FLOOR(1.3) FROM DUAL
结果:1
5、MOD(number,divisor)函数:取余。number为被除数,divisor为除数。如果divisor为0,则返回number
select MOD(6,4) FROM DUAL
结果:2
6、SQRT(X)函数:X的平方根
select SQRT(4) FROM DUAL
结果:2
7、COS(n)函数:返回n的余弦值
select COS(0) FROM DUAL
结果:1
8、ACOS(n)函数:反余弦函数,n between -1 and 1,返回值between 0 and pi,输出以弧度为单位.
select ACOS(1) FROM DUAL
结果:0
9、COSH(n)函数:计算n的双曲余弦值.
select COSH(0) FROM DUAL
结果:1
10、SIN(n)函数:返回n的正弦值,n为弧度
select SIN(0) FROM DUAL
结果:0
11、ASIN(n)函数:返回n的反正弦值. n的范围应该是-1到1之间,返回的结果在-pi/2到pi/2之间,以弧度为单位.
select ASIN(0) FROM DUAL
结果:0
12、SINH(n)函数:返回n的双曲正弦值,n为弧度
select SINH(0) FROM DUAL
结果:0
13、TAN(n)函数:返回n的正切值,n为弧度
select TAN(0) FROM DUAL
结果:0
14、ATAN(n)函数:计算x的反正切值.返回值在-pi/2到pi/2之间,单位是弧度.
select ATAN(0) FROM DUAL
结果:0
15、ATAN2(x,y)函数:返回x除以y的反正切值.结果在负的pi/2到正的pi/2之间,单位是弧度.
select ATAN2(0,1) FROM DUAL
结果:0
16、TANH(n)函数:返回n的双曲正切值,n为弧度
select TANH(0) FROM DUAL
结果:0
17、POWER(X,Y)函数:X的Y次幂
select POWER(2,3) FROM DUAL
结果:8
18、LOG(X,Y)函数:X为底Y的对数,X>0 and not 1,Y>0
select Log(2,4) FROM DUALLN(x)函数
结果:2
19、EXP(x)函数:计算e的x次幂. e为自然对数,e=2.71828...
select EXP(1) FROM DUAL
结果:2.71828182845905
20、LN(x)函数:返回x的自然对数. x必须是正数,并且大于0
select LN(2.71828182845905) FROM DUAL
结果:1
21、TRUNC(X[,Y])函数:X在第Y位截断。直接截取,不四舍五入。y缺省值为0。y>0,就是四舍五入到小数点右边y位。若y<0,四舍五入到小数点左边|y|位。
select TRUNC(1.126,2) FROM DUAL
结果:1.12
22、ROUND(X[,Y])函数:X在第Y位四舍五入
select ROUND(2.123,2) FROM DUAL
结果:2.12
23、BITAND(n1,n2)函数:位与运算符。3和9转为二进制分别为0011和1001,做位与运算得到0001,转换为十进制数为1.
select BITAND(3,9) FROM DUAL
结果:1
24、BIN_TO_NUM(n1,n2,……n)函数:二进制转向十进制
select BIN_TO_NUM(1,0) FROM DUAL
结果:2
25、TO_char()格式化数值:常见的字符匹配有 0、9、,、$、FM(去掉前面空格和后面的0)、L、C。其中FM可以与$,L,C一起使用
select to_char(123.45, '0000.000') "0",
to_char(123.45, '9999.999') "9",
to_char(123123, '99,999,999.99') ",",
to_char(123123.0300, 'FM99,999,999.99') FM,
to_char(123123.3, '$99,999,999.99') "$",
to_char(123123.3, 'L99,999,999.99') L,
to_char(123123.3, '99,999,999.99C') C
from dual;
引用Oracle函数——数值函数_oracle数字函数-CSDN博客
- round()四舍五入(可以写保留几位小数)
SQL> select round(12.34) from dual;
ROUND(12.34)
------------
12
SQL> select round(12.34,1) from dual;
ROUND(12.34,1)
--------------
12.3
SQL> select round(12.36,1) from dual;
ROUND(12.36,1)
--------------
12.4
SQL> select round(12.36,-1) from dual;
ROUND(12.36,-1)
---------------
10
2、trunc()直接截断,保留整数部分,不论多少都是截断。(加位数截断几位,-1就是10)
SQL> select trunc(12.34) from dual;
TRUNC(12.34)
------------
12
SQL> select trunc(12.74) from dual;
TRUNC(12.74)
------------
12
SQL> select trunc(12.36,-1) from dual;
TRUNC(12.36,-1)
---------------
10