Oracle系列之add_months简介以及用法归纳教程

Oracle系列之add_months简介以及用法归纳教程

最近遇到一个SQL统计,需要遇到获取某个日期n个月后的日期,比如统计入职时间超过2年的员工信息

如果不依靠Oracle函数,自己去写有点麻烦,不过通过网上资料,找到Oracle官方提供的add_months函数

1、函数定义

add_months:函数将一个月数(n)添加到一个日期,并返回相隔n月的同一天

官网的图示:
在这里插入图片描述
图片来自官网:https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions004.htm

2、函数语法

语法:

ADD_MONTHS(date_expression, month)
  • 1) date_expression

该date_expression参数是DATE值的表达式,可以传入一个日期类型的参数,可以当前系统时间也可以是数据表保存的时间值

  • 2) month

该month参数是一个整数,表示添加的月份数。该month参数可以是零,正或负。正月份值使您可以按月前进到一个日期值,而负月份值可以使您向后退到一个日期值。

3、使用例子

  • 查询出半年前的时间
   select add_months(sysdate,-6) from dual;

ps:dual是Oracle的系统表,其只有一行一列

  • 查询出半年后的时间
   select add_months(sysdate,6) from dual;
  • 获取上个月的最后一天
SELECT
  LAST_DAY( ADD_MONTHS(SYSDATE , - 1 ) )
FROM
  dual;
  • 从emp表查询列出来公司就职时间超过2年的员工名单
     select ename, hiredate
              from emp
             where hiredate <= add_months(sysdate, -2*12);

OR

  select ename, hiredate
              from emp
             where sysdate >= add_months(hiredate , -2*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);

4、注意要点

如果date_expression是该月的最后一天,则结果日期始终是该月的最后一天,例如,例如,将1个月添加到2021年2月28日将得出2021年3月31日,而不是2021年3月28日

使用add_months函数,有时候需要结合SYSDATE或者dual表使用

5、参考资料

smileNicky CSDN认证博客专家 分布式 Java Spring
java程序员,软件工程专业,专注于sql调优,SpringBoot,spring框架学习,个人邮箱nickypm@foxmail.com,公众号nickymp
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 岁月 设计师:pinMode 返回首页
实付 9.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值