之前的一些博文中已经提及过这两个函数的用法,但之前的值使用了数字类型进行的测试。
在这篇博文里,算是这两个函数使用的补充吧。因为近段时间里常用到了这两个函数,其中省略了
函数中的部分参数,但同样可以使用函数。以下是测试的过程:
----round函数与trunc函数的使用方法:
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 sysdate from dual;
SYSDATE
-------------------
2016-12-13 11:26:37
---适用两个函数查看省略函数中Y参数值的日期:
sys@PROD>select trunc(sysdate),round(sysdate) from dual;
TRUNC(SYSDATE) ROUND(SYSDATE)
------------------- -------------------
2016-12-13 00:00:00 2016-12-13 00:00:00
sys@PROD>select round(sysdate,'dd'),trunc(sysdate,'dd') from dual;
ROUND(SYSDATE,'DD') TRUNC(SYSDATE,'DD')
------------------- -------------------
2016-12-13 00:00:00 2016-12-13 00:00:00
#当函数省略Y参数的时候,数字类型默认为Y=0,可省略;日期类型默认为Y=’dd’,可省略。
---使用两个函数查看省略函数中Y参数值的某个数值:
sys@PROD>select round(3.14159),trunc(3.14159) from dual;
ROUND(3.14159) TRUNC(3.14159)
-------------- --------------
3 3
#round函数取得该值为3,因为个位数后面为1,四舍五入取0.
---使用两个函数查看以不同格式取舍时指定的日期与时间:
--round函数:
sys@PROD>select round(to_date('2016-12-13 13:45:55','yyyy-mm-dd hh24:mi:ss')),
2 round(to_date('2016-12-13 13:45:55','yyyy-mm-dd hh24:mi:ss'),'mm'),
3 round(to_date('2016-12-13 13:45:55','yyyy-mm-dd hh24:mi:ss'),'yyyy')
4 from dual;
ROUND(TO_DATE('2016 ROUND(TO_DATE('2016 ROUND(TO_DATE('2016
------------------- ------------------- -------------------
2016-12-14 00:00:00 2016-12-01 00:00:00 2017-01-01 00:00:00
sys@PROD>select round(to_date('2016-12-16 13:45:55','yyyy-mm-dd hh24:mi:ss'),'mm') from dual;
ROUND(TO_DATE('2016
-------------------
2017-01-01 00:00:00
--trunc函数:
sys@PROD>select trunc(to_date('2016-12-16 13:45:55','yyyy-mm-dd hh24:mi:ss')),
2 trunc(to_date('2016-12-16 13:45:55','yyyy-mm-dd hh24:mi:ss'),'mm'),
3 trunc(to_date('2016-12-16 13:45:55','yyyy-mm-dd hh24:mi:ss'),'yyyy')
4 from dual;
TRUNC(TO_DATE('2016 TRUNC(TO_DATE('2016 TRUNC(TO_DATE('2016
------------------- ------------------- -------------------
2016-12-16 00:00:00 2016-12-01 00:00:00 2016-01-01 00:00:00
sys@PROD>
---使用两个函数查看以不同位数取舍时指定的数值:
--round函数:
sys@PROD>select round(36.64159),round(36.64159,2),round(36.64159,-1) from dual;
ROUND(36.64159) ROUND(36.64159,2) ROUND(36.64159,-1)
--------------- ----------------- ------------------
37 36.64 40
--trunc函数:
sys@PROD>select trunc(36.64159),trunc(36.64159,2),trunc(36.64159,-1) from dual;
TRUNC(36.64159) TRUNC(36.64159,2) TRUNC(36.64159,-1)
--------------- ----------------- ------------------
36 36.64 30
--我们从以上的测试看出:总的来说,round函数是严格遵循“四舍五入”法则取舍,而trunc函数则没有
严格遵循。trunc更利索地截取,从参数值中确定参考位置,然后就从该位置之后的位数全部置零(对日期类型,全部以月份或日的首个月份或日)。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31392094/viewspace-2130379/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/31392094/viewspace-2130379/