1) trunc函数,用于截断数字,
截断数字,用法为:trunc(n1,n2),n1表示要被截断的数字,n2表示要截断到那位,但是不会进行四舍五入。
n2还可以表示负数,表示截断到小数点前,意思就是小数点后面的都不要了,最后结果是以0结尾的整数。
当trunc(n1,n2)当n2为负数时,-1表示个位为0,-2表示个位和十位都为0,后面一次类推。
SQL> select trunc(13.1) from dual;
TRUNC(13.1)
-----------
13
SQL> select trunc(13.23,2)from dual;
TRUNC(13.23,2)
--------------
13.23
SQL> select trunc(13.23,1)from dual;
TRUNC(13.23,1)
--------------
13.2
SQL> select trunc(13.23432,3)from dual;
TRUNC(13.23432,3)
-----------------
13.234
SQL> select trunc(13.2,-1)from dual;
TRUNC(13.2,-1)
--------------
10
SQL> select trunc(119.2,-1)from dual;
TRUNC(119.2,-1)
---------------
110
SQL> select trunc(120.2,-1)from dual;
TRUNC(120.2,-1)
---------------
120
SQL> select trunc(120.2,-2)from dual;
TRUNC(120.2,-2)
---------------
100
SQL> select trunc(1220.11,-3)from dual;
TRUNC(1220.11,-3)
-----------------
1000
SQL> select trunc(12230.11,-4)from dual;
TRUNC(12230.11,-4)
------------------
10000
2)trunc用于截断日期
SQL> select trunc(sysdate)from dual;//返回当前日期
TRUNC(SYSDATE)
--------------
2019/05/21
SQL> select trunc(sysdate,‘mm‘)from dual;//返回当前月份的第一天
TRUNC(SYSDATE,‘MM‘)
-------------------
2019/05/01
SQL> select trunc(sysdate,‘yyyy‘)from dual;//返回当前年份的第一天
TRUNC(SYSDATE,‘YYYY‘)
---------------------
2019/01/01
SQL> select trunc(sysdate,‘dd‘)from dual;//返回当前日期
TRUNC(SYSDATE,‘DD‘)
-------------------
2019/05/21
SQL> select trunc(sysdate,‘d‘)from dual;//返回当前星期的第一天(为星期天,工作的第一天为星期一)
TRUNC(SYSDATE,‘D‘)
------------------
2019/05/19
SQL> select trunc(sysdate,‘hh‘)from dual;//返回当前小时
TRUNC(SYSDATE,‘HH‘)
-------------------
2019/05/21 15:00:00
SQL> select trunc(sysdate,‘mi‘)from dual;//返回当前时间的分钟,没有秒的精确,只有毫秒。
TRUNC(SYSDATE,‘MI‘)
-------------------
2019/05/21 15:20:00
3)add_months(时间,数字)表示可以得到某一时间之前或之后n个月的时间;
SQL> select add_months(sysdate,1)from dual;//获取当前时间一个月之后的时间
ADD_MONTHS(SYSDATE,1)
---------------------
2019/06/21 15:37:02
SQL> select add_months(sysdate,6)from dual;//获取到当前时间半年之后的时间
ADD_MONTHS(SYSDATE,6)
---------------------
2019/11/21 15:37:20
4)months_between函数返回两个日期之间的月份数。如果两个日期月份内天数相同,或者都是某个月的最后一天,返回一个整数,否则,返回数值带小数,以每天1/31月来计算月中剩余天数。
MONTHS_BETWEEN (x, y)用于计算x和y之间有几个月。如果x在日历中比y早,那么MONTHS_BETWEEN()就返回一个负数。
当x 和 y 之间的月份之差不是整月的时候,可以采用小数表示。
months_between(date1, date2),必须注意的是,date1与date2都为Date类型,不然会出现错误。须用to_date(‘’,‘‘) 来转换为日期格式,才能参加计算。
SQL> select months_between(sysdate,‘10-5月-20‘)from dual;
MONTHS_BETWEEN(SYSDATE,‘10-5月-20‘)
----------------------------------
-11.6239557198327
select months_between(‘10-5月-20‘,sysdate)from dual;
MONTHS_BETWEEN(‘10-5月-20‘,SYSDATE)
----------------------------------
11.6239329450418
SQL> select months_between(‘21-5月-20‘,sysdate)from dual;
MONTHS_BETWEEN(‘21-5月-20‘,SYSDATE)
----------------------------------
12
原文地址:https://www.cnblogs.com/jasonboren/p/10900238.html