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;
  • 获取上个月的最后一天
SELECTLAST_DAY( ADD_MONTHS(SYSDATE , - 1 ) )
FROMdual;
  • 从emp表查询列出来公司就职时间超过2年的员工名单
     select ename, hiredatefrom empwhere hiredate <= add_months(sysdate, -2*12);

OR

  select ename, hiredatefrom empwhere sysdate >= add_months(hiredate , -2*12);
  • 查询出在员工’SCOTT’入职一年后入职的员工的信息
select ename, a.hiredate, salfrom emp a, (select hiredate from emp where ename = 'SCOTT') bwhere 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、参考资料

  • https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions004.htm

  • https://www.oracletutorial.com/oracle-date-functions/oracle-add_months/#:~:text=Oracle%20ADD_MONTHS.%20Oracle%20ADD_MONTHS%20%28%29%20function%20adds%20a,returns%20the%20same%20day%20n%20of%20month%20away

Oracle系列之add_months简介以及用法归纳教程相关推荐

  1. Oracle中add_months()函数的用法

    Oracle中add_months()函数的用法 查询当前时间n个月以前的时间: select add_months(sysdate,-n) from dual; 查询当前时间n个月之后的时间: se ...

  2. oracle软件工程,.Net软件工程师学用Oracle系列(9):系统函数(上)

    .Net程序员学用Oracle系列(9):系统函数(上) 本文大纲 众所周知,Oracle 中系统函数特别多,貌似有好几百个,但实际上大部分函数对于普通应用而言,永远都用不到,本文将主要介绍 Orac ...

  3. oracle系列(六)OEM与常见故障处理

    博主QQ:819594300 博客地址:http://zpf666.blog.51cto.com/ 有什么疑问的朋友可以联系博主,博主会帮你们解答,谢谢支持! 前言:oracle除了使用命令操作以外, ...

  4. Oracle中INSTR和SUBSTR的用法

    2019独角兽企业重金招聘Python工程师标准>>> Oracle中INSTR和SUBSTR的用法 Oracle中INSTR的用法: INSTR方法的格式为 INSTR(源字符串, ...

  5. JSON简介以及用法汇总

    SON简介以及用法汇总 什么是JSON? JavaScript 对象表示法(JavaScript Object Notation). JSON是一种轻量级的数据交换格式,某个JSON格式的文件内部譬如 ...

  6. 微软BI 之SSAS 系列 - 多维数据集维度用法之二 事实维度(退化维度 Degenerate Dimension)...

    这篇文章是基于上一篇 SSAS 系列 - 多维数据集维度用法之一 引用维度 Referenced Dimension 继续讲解多维数据集维度用法中的事实维度. 事实维度,顾名思义就是把事实表 Fact ...

  7. oracle分组聚合查询,Oracle中分组查询group by用法规则解析

    本篇文章小编给大家分享一下Oracle中分组查询group by用法规则解析,文章介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. Oracle中group by ...

  8. [js高手之路]深入浅出webpack教程系列9-打包图片(file-loader)用法

    [js高手之路]深入浅出webpack教程系列索引目录: [js高手之路]深入浅出webpack教程系列1-安装与基本打包用法和命令参数 [js高手之路]深入浅出webpack教程系列2-配置文件we ...

  9. day12_oracle hint——SQL优化过程中常见Oracle中HINT的30个用法

    在SQL语句优化过程中,经常会用到hint, 以下是在SQL优化过程中常见Oracle中"HINT"的30个用法 1. /*+ALL_ROWS*/ 表明对语句块选择基于开销的优化方 ...

最新文章

  1. MCU多任务提高实时性
  2. 报错解决:DB::Exception: Scalar subquery returned more than one row.
  3. python用matplotlib画人口图_Python+Matplotlib画contour图
  4. excel修改列名_听说你还在手动合并Excel,看看这个吧!?
  5. 关于交集(Intersect)和差集(Except)
  6. oracle9i用expdp导出全库,Linux下Oracle 11g数据库全库自动备份(EXPDP)
  7. RabbitMq、ActiveMq、ZeroMq、kafka之间的比较,资料汇总
  8. 伪分布式Hadoop2.x集群的搭建1
  9. python-批量插入多条数据-pymysql-executemany方法
  10. 【文献阅读】ResNet-Deep Residual Learning for Image Recognition--CVPR--2016
  11. 通过helm在k8s上部署spark(伪集群版)
  12. SPSS正态性检验(图文+数据集)【SPSS 015期】
  13. win10系统安装SQL Server2005中文版安装教程和下载地址(亲测成功)
  14. C/C++ typedef用法!
  15. 汉武帝发起的三大战役(河南、漠南、河西三大战役)
  16. js Array 标准方法
  17. FFmpeg 使用命令整理 – 提取音频或视频、提取图片、格式转换等
  18. java服务器如何群发消息,java TCP编程简单实现一个消息群发功能
  19. MyBatisPlus 学习笔记_MP的AR模式
  20. solrCloud配置

热门文章

  1. SOEM 源码解析 ecx_map_sii
  2. Vue中components与component的区分
  3. android友盟埋点,React Native 的友盟统计--打点/埋点
  4. Ubuntu 7.04--桌面
  5. 证监计算机类专业知识,2020国考中国证监会计算机类专业考什么?
  6. matlab 点顺时针排序,按顺时针顺序排序点?
  7. 逆势高速增长,毫末征战三年诠释量产为王
  8. 洛谷P2327 [SCOI2005]扫雷 题解
  9. [CSAW‘22] 世界这么大
  10. phpyun职位表“phpyun_company_job”添加字段,保存数据到数据库