Oracle-时间函数-add_months(), last_day(), months_between()

Oracle中的常用的时间函数的总结: 

--ADD_MONTHS()

一、函数说明: 

格式:ADD_MONTHS(DATE, MONTHS)

注:MONTHS 可以是负数,尽量是整数,如果给小数,则正数被截为小于该数的最大整数,负数则被截为大于该数的最小整数

此函数表示在给定的时间 DATE 基础上增加 MONTHS 个月,结果返回一个新的日期。 

二、用法实例1

--emp表查询列出来公司就职时间超过24年的员工名单

select ename, hiredate from emp where hiredate <= add_months(sysdate, -288);

--负数代表系统时间(sysdate)之前的24年的时间-288 = -24*12

--查询出在员工'SCOTT'入职一年后入职的员工的信息

select ename, a.hiredate, sal from emp a, (select hiredate from emp where ename = 'SCOTT') b where a.hiredate > = add_months(b.hiredate, 12);

--查询半年前的时间

select add_months(sysdate,6) from dual;

说明:dualoracle提供的最小功能表,它只有一行一列

三、用法实例2

SELECT add_months(to_date('29-02-1996', 'dd-mm-yyyy'),-12.99) FROM dual; --返回  1995-02-28 

SELECT add_months(to_date('15-09-1961','dd-mm-yyyy'),1) FROM dual; --返回 1961-10-15

SELECT add_months(to_date('31-10-1961','dd-mm-yyyy'),1) FROM dual; --返回 1961-11-30

SELECT add_months(to_date('31-01-1999','dd-mm-yyyy'),1) FROM dual; --返回 1999-02-28

--LAST_DAY()

一、函数说明: 

格式:LAST_DAY(DATE),返回本月的最后一天

注:MONTHS 可以是负数,尽量是整数,如果给小数,则正数被截为小于该数的最大整数,负数则被截为大于该数的最小整数

此函数表示在给定的时间 DATE 基础上增加 MONTHS 个月,结果返回一个新的日期。    

二、用法实例1 

SELECT LAST_DAY(SYSDATE) FROM DUAL; --返回 2018-05-31 00:14:18

--MONTHS_BETWEEN() 

一、函数说明: 

格式:MONTHS_BETWEEN(DATE1, DATE2),用于计算date1date2之间有几个月

如果date1在日历中比date2晚,那么MONTHS_BETWEEN()就返回一个正数。

如果date1在日历中比date2早,那么MONTHS_BETWEEN()就返回一个负数。

如果date1date2日期一样,那么MONTHS_BETWEEN()就返回一个0    

二、用法实例1 

SELECT MONTHS_BETWEEN(to_date('2018-05-03', 'yyyy-MM-dd'), to_date('2018-09-11', 'yyyy-MM-dd')) mont FROM DUAL; --返回 -4.25806451612903

oracle里面,以31天为基数

猜你喜欢

转载自www.cnblogs.com/bishuihengchen/p/9022566.html