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

举报
yd_273762914 发表于 2021/03/28 02:17:13 2021/03/28
【摘要】 Oracle系列之add_months简介以及用法归纳教程 最近遇到一个SQL统计,需要遇到获取某个日期n个月后的日期,比如统计入职时间超过2年的员工信息 如果不依靠Oracle函数,自己去写有点麻烦,不过通过网上资料,找到Oracle官方提供的add_months函数 1、函数定义 add_months:函数将一个月数(n)添加到一个日期,并返回相隔n月的同一...

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
  • 1) date_expression

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

  • 2) month

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

3、使用例子

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

  
 
  • 1

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

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

  
 
  • 1
  • 获取上个月的最后一天
SELECT
  LAST_DAY( ADD_MONTHS(SYSDATE , - 1 ) )
FROM
  dual;

  
 
  • 1
  • 2
  • 3
  • 4
  • 从emp表查询列出来公司就职时间超过2年的员工名单
 select ename, hiredate from emp where hiredate <= add_months(sysdate, -2*12);

  
 
  • 1
  • 2
  • 3

OR

  select ename, hiredate from emp where sysdate >= add_months(hiredate , -2*12);

  
 
  • 1
  • 2
  • 3
  • 查询出在员工’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);

  
 
  • 1
  • 2
  • 3

4、注意要点

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

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

5、参考资料

文章来源: smilenicky.blog.csdn.net,作者:smileNicky,版权归原作者所有,如需转载,请联系作者。

原文链接:smilenicky.blog.csdn.net/article/details/114871510

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。