Oracle中ADD_MONTHS()函数详解

news/2024/12/21 20:31:39/

文章目录

  • 前言
  • 一、ADD_MONTHS()的语法
  • 二、主要用途
  • 三、测试用例
  • 总结


前言

在Oracle数据库中,ADD_MONTHS()函数用于在日期中添加指定的月数。


一、ADD_MONTHS()的语法

ADD_MONTHS(date, n)

其中,date是一个日期值,n是一个整数值,表示要添加的月数。

此函数将返回一个新的日期,该日期是在给定日期的基础上添加指定月数后得到的。

注意,如果n为正数,则添加的是未来的月数;如果n为负数,则添加的是过去的月数。

二、主要用途

Oracle中的ADD_MONTHS()函数主要用于在给定的日期上添加指定的月份。它接受两个参数,第一个参数是一个日期值,可以是日期数据类型或带有日期值的字符串,第二个参数是要添加的月份数。函数返回一个新的日期,该日期是在给定日期的基础上添加了指定的月份数。

ADD_MONTHS()函数还可以处理闰年和月底的情况。如果给定的日期是闰年的2月29日,并且要添加的月份数导致结果日期是一个非闰年的2月29日,函数会将结果日期调整为2月28日。

此外,如果给定的日期是一个月的最后一天,并且要添加的月份数导致结果日期中没有该月,则函数将返回结果日期中的上个月的最后一天。

三、测试用例

测试SQL:

sql">SELECT 
ADD_MONTHS(TO_DATE('2024-10-01', 'YYYY-MM-DD'), 1)    AS DATE1,
ADD_MONTHS(TO_DATE('2024-10-01', 'YYYY-MM-DD'), -1)   AS DATE2,
ADD_MONTHS(TO_DATE('2024-10-01', 'YYYY-MM-DD'), 1.9)  AS DATE3,
ADD_MONTHS(TO_DATE('2024-10-01', 'YYYY-MM-DD'), 1.1)  AS DATE4,
ADD_MONTHS(TO_DATE('2024-10-31', 'YYYY-MM-DD'), 1)    AS DATE5
FROM DUAL;

测试结果:
在这里插入图片描述

由以上测试用例,可以看出以下几点,尤其需要注意第三点这个特殊情况

1、n可以为正整数,也可以为负整数。

2、n为小数时,不会四舍五入,而会直接取整数部分,小数不分不参与运算。因此1.9和1.1的结果一致。

3、如果给定的日期是一个月的最后一天,并且要添加的月份数导致结果日期中没有该月,则函数将返回结果日期中的上个月的最后一天。比如:10月31日增加1一个月,应为11月31日,但11月没有31日,因此返回11月30日。


总结

总之,ADD_MONTHS()函数是在Oracle中用于处理日期计算和操作的一个非常有用的函数。

如果这篇博客对大家有所帮助,我希望能得到各位的免费点赞收藏,作为对我的鼓励和支持。
同时,也请大家在评论区留下您宝贵的意见和建议,我将非常欢迎。
感谢大家的支持评论收藏!!!


http://www.ppmy.cn/news/1536704.html

相关文章

【Linux】进程控制(创建、终止、等待、替换)

文章目录 1. 进程创建2. 进程终止3. 进程等待4. 进程程序替换4.1 认识进程替换4.2 认识全部接口 1. 进程创建 如何创建进程我们已经在之前学习过了,无非就是使用fork(),它有两个返回值。创建成功,给父进程返回PID,给子进程返回0&…

【JavaEE】——文件IO

阿华代码,不是逆风,就是我疯 你们的点赞收藏是我前进最大的动力!! 希望本文内容能够帮助到你!! 目录 一:认识文件 1:文件的概念 2:文件的结构 3:文件路径…

2024年华为OD机试真题-空栈压数-Python-OD统一考试(E卷)

最新华为OD机试考点合集:华为OD机试2024年真题题库(E卷+D卷+C卷)_华为od机试题库-CSDN博客 每一题都含有详细的解题思路和代码注释,精编c++、JAVA、Python三种语言解法。帮助每一位考生轻松、高效刷题。订阅后永久可看,发现新题及时跟新。 题目描述: 向一个空栈压入…

二维数组的旋转与翻转(C++)(上(这只是简单讲解))

二维数组的旋转与翻转(C) 引言 在计算机科学中,二维数组是一种常见的数据结构,广泛应用于图像处理、数据挖掘、机器学习等多个领域。二维数组的旋转与翻转是处理二维数据时经常需要用到的操作。本文将详细介绍二维数组的旋转与翻…

C++入门基础知识105—【关于C++ 嵌套循环】

成长路上不孤单😊😊😊😊😊😊 【14后😊///C爱好者😊///持续分享所学😊///如有需要欢迎收藏转发///😊】 今日分享关于C 嵌套循环的相关内容! 关于…

GO网络编程(二):客户端与服务端通信【重要】

本节是新知识,偏应用,需要反复练习才能掌握。 目录 1.C/S通信示意图2.服务端通信3.客户端通信4.通信测试5.进阶练习:客户端之间通信 1.C/S通信示意图 客户端与服务端通信的模式也称作C/S模式,流程图如下 其中P是协程调度器。可…

一分钟掌握 Java20 新特性

1. 预览特性:模式匹配 for switch (JEP 427) 描述: Java 20 继续完善了模式匹配 for switch ,使得 switch 语句可以处理更多类型的输入,并且语法更加灵活。 代码示例: public class SwitchPatternMatchingExample {p…

HarmonyOS NEXT应用开发(一、打造最好用的网络通信模块组件)

随着HarmonyOS NEXT 的发布,越来越多的开发者开始关注如何在这个新平台上高效地进行应用开发。其中网络通信模块的封装尤为关键。纵观HarmonyOS的众多三方网络库及封装,竟没有一个简单好用的。虽然有个axios的鸿蒙版,但有点儿重了也不是很好用…