----ROUND(x,y)与TRUNC(x,y)函数中y参数值为省略、空值与null的区别:
sys@PROD>alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
Session altered.
---函数的结构:
ROUND(x,y):以小数点后Y位(或Y日期格式)四舍五入取X的值。
TRUNC(x,y):以小数点后Y位(或Y日期格式)截断取X的值。
#两个函数同时适用于处理日期类型与数字类型的数据。
---使用函数查询日期数据类型:
sys@PROD>select round(sysdate),round(sysdate,'dd'),
2 trunc(sysdate),trunc(sysdate,'dd')
3 from dual;
ROUND(SYSDATE) ROUND(SYSDATE,'DD') TRUNC(SYSDATE) TRUNC(SYSDATE,'DD')
------------------- ------------------- ------------------- -------------------
2016-12-14 00:00:00 2016-12-14 00:00:00 2016-12-13 00:00:00 2016-12-13 00:00:00
---使用函数查询数字数据类型:
sys@PROD>select round(3,14159),round(3.14159,0),
2 trunc(3,14159),trunc(3.14159,0)
3 from dual;
ROUND(3,14159) ROUND(3.14159,0) TRUNC(3,14159) TRUNC(3.14159,0)
-------------- ---------------- -------------- ----------------
3 3 3 3
#通过这一组查询,可以看到省略y值得情况下,相当于数字类型的以个位数四舍五入,
相当于日期类型的以“dd”格式取舍。
---将函数中的y参数值设置为’’ :
sys@PROD>select round(sysdate,''),round(3.14159,''),
2 trunc(sysdate,''),trunc(3.14159,'')
3 from dual;
ROUND(SYSDATE,'') ROUND(3.14159,'') TRUNC(SYSDATE,'') TRUNC(3.14159,'')
------------------- ----------------- ------------------- -----------------
#均为空值。
---将函数中的y参数值设置为null :
sys@PROD>select round(sysdate,null), round(3.14159,null),
2 trunc(sysdate,null),trunc(3.14159,null)
3 from dual;
ROUND(SYSDATE,NULL) ROUND(3.14159,NULL) TRUNC(SYSDATE,NULL) TRUNC(3.14159,NULL)
------------------- ------------------- ------------------- -------------------
#均为空值。
---拓展查询:
--以世纪为取舍单位:
sys@PROD>select round(sysdate,'cc') from dual;
ROUND(SYSDATE,'CC')
-------------------
2001-01-01 00:00:00
--以季度为取舍单位:
sys@PROD>select round(to_date('2016-08-16 14:31:48','yyyy-mm-dd hh24:mi:ss'),'q') from dual;
ROUND(TO_DATE('2016
-------------------
2016-10-01 00:00:00
--以任意字符为取舍依据:
sys@PROD>select round(3.14159,'/') from dual;
select round(3.14159,'/') from dual
*
ERROR at line 1:
ORA-01722: invalid number
#报错,不能识别这种数据类型。
--以小数点后222位取舍:
sys@PROD>select round(3.14159,222) from dual;
ROUND(3.14159,222)
------------------
3.14159
--以小数点前10位取舍:
sys@PROD>select round(333.14159,-10) from dual;
ROUND(333.14159,-10)
--------------------
0
--总结来说:
ROUND(x,y):以小数点后Y位(或Y日期格式)四舍五入取X的值。
TRUNC(x,y):以小数点后Y位(或Y日期格式)截断取X的值。
ROUND(x,y)中的y参数,对于数字类型,正数为小数点右边y位,负数为小数点左边y位,进行四舍五入;
对于日期类型,是以y为取舍单位进行四舍五入;
TRUNC(x,y)中的y参数,对于数字类型,正数为小数点右边y位,负数为小数点左边y位,进行截取取值;
对于日期类型,是以y为取舍单位进行截取取值。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31392094/viewspace-2130393/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/31392094/viewspace-2130393/