Oracle 11g中三参数date_add函数使用规则及运行逻辑疑问
Oracle 11g三参数date_add函数运行逻辑说明
公开资料中可查询到的2参数date_add是MySQL的内置函数,和Oracle 11g环境下的实现不属于同一套逻辑。Oracle 11g原生没有内置date_add函数,你遇到的三参数版本是业务系统自定义的封装函数,通常用于兼容其他数据库语法,或者简化日期运算的写法。
你给出的示例:
date2:=date_add('MM', 1, DPF_DATE_FIN_PRD);
通用的实现逻辑下三个参数的作用分别是:
- 第一个参数:日期运算的单位,常见取值和对应规则如下:
YY/YYYY:按年运算MM:按月运算DD:按天运算HH/HH24:按小时运算MI:按分钟运算SS:按秒运算
- 第二个参数:运算增量,正数为向日期之后偏移,负数为向日期之前偏移
- 第三个参数:参与运算的基准日期
按这个规则,你给出的示例作用就是给基准日期DPF_DATE_FIN_PRD加1个月,等价于Oracle原生的ADD_MONTHS(DPF_DATE_FIN_PRD, 1)。
如果需要确认该函数的准确逻辑,可在当前Oracle实例中执行以下查询查看函数的完整实现代码:
select text from all_source where type='FUNCTION' and name='DATE_ADD' order by line;
不同场景下封装的自定义函数可能存在细节差异,比如月末日期的处理规则、非法参数的校验逻辑等,以实际的函数定义为准。
内容的提问来源于stack exchange,提问作者Anouer Kassaa
相关产品推荐
相关产品推荐

