@oracle自定义函数写excel中DATE函数

oracle自定义函数写excel中DATE函数

EXCEL中DATE函数逻辑为DATE(year,month,day)
含义:DATE(年,月,日)
EXCEL理解逻辑如下:

  1. Year 参数的值可以包含一到四位数字。Excel 将根据计算机正在使用的日期系统来解释 year 参数。默认情况下,Microsoft Excel for Windows 使用的是 1900 日期系统,这表示第一个日期为 1900 年 1 月 1 日。

    • 如果 year 介于 0(零)到 1899 之间(包含这两个值),则 Excel 会将该值与 1900 相加来计算年份。例如,DATE(108,1,2) 返回 2008 年 1 月 2 日 (1900+108)。
    • 如果 year 介于 1900 到 9999 之间(包含这两个值),则 Excel 将使用该数值作为年份。例如,DATE(2017,12,5) 将返回 2017 年 12月 5日。
    • 如果 year 小于 0 或大于等于 10000,则 Excel 返回 错误值 #NUM!。
  2. Month 一个正整数或负整数,表示一年中从 1 月至 12 月(一月到十二月)的各个月。
    • 如果 month 大于 12,则 month 会从指定年份的第一个月开始加上该月份数。例如,DATE(2016,14,2) 返回表示 2017 年 2 月 2 日的序列数。
    • 如果 month 小于 1,则 month 会从指定年份的第一个月开始减去该月份数,然后再加上 1 个月。例如,DATE(207,-3,2) 返回表示 2016 年 9 月 2 日的序列号。
  3. Day 一个正整数或负整数,表示一月中从 1 日到 31 日的各天。
    • 如果 day 大于指定月中的天数,则 day 会从该月的第一天开始加上该天数。例如,DATE(2017,1,35) 返回表示 2017 年 2 月 4 日的序列数。
    • 如果 day 小于 1,则 day 从指定月份的第一天开始减去该天数,然后再加上 1 天。例如,DATE(2017,1,-15) 返回表示 2016 年 12 月 16 日的序列号。

ORACLE自定义函数代码如下:

--创建函数
create or replace function term_date(year_p  number,month_p number,day_p   number) return date isterm date;--excel中的date(year,month,day)的逻辑,转化成函数
begin--判断年份--如果年份在0-1899之间,则使用1900与年份相加if year_p >= '0' and year_p <= '1899' then--如果月份大于12,则从该年的1月份开始加月份,并且将本身的月份减1--如果月份小于1,则从该年的1月份开始减月份,并且将本身的月份减1if month_p > 12 or month_p < 1 then--如果天数大于指定月份的天数,则从该月1号开始,加天数--如果天数小于1,则从该月1号开始,减天数if day_p > to_char(last_day(ADD_MONTHS(to_date(to_char(1900 + year_p) || '-' ||to_char(1),'yyyy-mm'),month_p - 1)),'dd') or day_p < 1 thenselect ADD_MONTHS(to_date(to_char(1900 + year_p) || '-' ||to_char(1) || '-' || to_char(1),'yyyy-mm-dd'),month_p - 1) + day_p - 1into termfrom dual;--天数正常elseselect ADD_MONTHS(to_date(to_char(1900 + year_p) || '-' ||to_char(1) || '-' || day_p,'yyyy-mm-dd'),month_p - 1)into termfrom dual;end if;--月份正常情况   else--如果天数大于指定月份的天数,则从该月1号开始,加天数--如果天数小于1,则从该月1号开始,减天数if day_p > to_char(last_day(to_date(to_char(1900 + year_p) || '-' ||to_char(month_p),'yyyy-mm')),'dd') or day_p < 1 thenselect to_date(to_char(1900 + year_p) || '-' || to_char(month_p) || '-' ||to_char(1),'yyyy-mm-dd') + day_p - 1into termfrom dual;--天数正常elseselect to_date(to_char(1900 + year_p) || '-' || to_char(month_p) || '-' ||to_char(day_p),'yyyy-mm-dd')into termfrom dual;end if;end if;--如果年份在1900-9999之间,则判断月份  elsif year_p >= '1900' and year_p <= '9999' then--如果月份大于12,则从该年的1月份开始加月份,并且将本身的月份减1--如果月份小于1,则从该年的1月份开始减月份,并且将本身的月份减1if month_p > 12 or month_p < 1 then--如果天数大于指定月份的天数,则从该月1号开始,加天数--如果天数小于1,则从该月1号开始,减天数if day_p > to_char(last_day(ADD_MONTHS(to_date(to_char(year_p) || '-' ||to_char(1),'yyyy-mm'),month_p - 1)),'dd') or day_p < 1 thenselect ADD_MONTHS(to_date(to_char(year_p) || '-' || to_char(1) || '-' ||to_char(1),'yyyy-mm-dd'),month_p - 1) + day_p - 1into termfrom dual;--天数正常elseselect ADD_MONTHS(to_date(to_char(year_p) || '-' || to_char(1) || '-' ||day_p,'yyyy-mm-dd'),month_p - 1)into termfrom dual;end if;--月份正常情况   else--如果天数大于指定月份,则从该月1号开始,加天数--如果天数小于1,则从该月1号开始,减天数if day_p > to_char(last_day(to_date(to_char(year_p) || '-' ||to_char(month_p),'yyyy-mm')),'dd') or day_p < 1 thenselect to_date(to_char(year_p) || '-' || to_char(month_p) || '-' ||to_char(1),'yyyy-mm-dd') + day_p - 1into termfrom dual;--天数正常elseselect to_date(to_char(year_p) || '-' || to_char(month_p) || '-' ||to_char(day_p),'yyyy-mm-dd')into termfrom dual;end if;end if;end if;return term;end term_date;

希望对大家有所帮助,如有问题,请多多指出

excel中DATE(year,month,day)函数——oracle自定义函数相关推荐

  1. oracle中怎么自定义函数,Oracle自定义函数

    用户自定义函数是存储在数据库中的代码块,可以把值返回到调用程序.函数的参数有3种类型: (1)in参数类型:表示输入给函数的参数,该参数只能用于传值,不能被赋值. (2)out参数类型:表示参数在函数 ...

  2. 查看oracle自定义函数,Oracle自定义函数查询数据字典项

    /****************************** 假设存储数据字典表名:data_dict_entry 表结构如下: create table data_dict_entry ( DIC ...

  3. excel中计算某年某月有多少天(函数:EOMONTH)

    excel中计算某年某月有多少天(函数:EOMONTH;DAY) 描述 函数 操作步骤 操作截图 描述 计算某年某月有多少天 函数 EOMONTH DAY 操作步骤 如果年月在A1,那么输入 =DAY ...

  4. oracle中的循环函数,Oracle日期函数和循环总结

    一,日期相关的函数 Select to_char(sysdate,'Q') from dual;--指定日期的季度 Select to_char(sysdate,'MM') from dual;--月 ...

  5. Excel中提取英文,数值和编码(LEN函数)

    Excel中提取英文,数值和编码(LEN函数) 提取英文: 数据源中包含英文+中文,要求提取英文信息 =LEFT(A2,2*LEN(A2)-LENB(A2)) 解读:LEN函数按照字符数计算,LENB ...

  6. Oracle自定义函数

    2019独角兽企业重金招聘Python工程师标准>>> Oracle自定义函数 用户定义函数是存储在数据库中的代码块,可以把值返回到调用程序.调用时如同系统函数一样,如max(val ...

  7. 自定义_Excel中的自定义函数(自定义函数的基础内容)

    各位朋友,你们好. 最近和网友沟通交流Excel问题,好些问题都没法直接实现,因此用了很多自定义函数,也给头条里的朋友写过几个自定义函数(比如颜色计算的函数.提取不重复内容的函数.汉字转拼音的函数-- ...

  8. oracle构建函数,Oracle创建函数

    Oracle创建函数 Oracle创建函数是通过PL/SQL自定义编写的,通过关键字function按照自己的需求把复杂的业务逻辑封装进PL/SQL函数中,函数提供一个返回值,返回给使用者.这样使用者 ...

  9. 在python中使用关键字define定义函数_python自定义函数def的应用详解

    这里是三岁,来和大家唠唠自定义函数,这一个神奇的东西,带大家白话玩转自定义函数 自定义函数,编程里面的精髓! def 自定义函数的必要函数:def 使用方法:def 函数名(参数1,参数2,参数-): ...

最新文章

  1. 盘点那些具有“爆款”潜力的智能家居产品
  2. 老男孩Linux运维第41期20170924开班第五周学习重点课堂记录
  3. 以女朋友为例讲解 TCP/IP 三次握手与四次挥手
  4. pythondir什么意思_Python之dir()与__dict__的区别
  5. 《The Corporate Startup》作者访谈
  6. p4: php5ts.dll p5: 5.6.14.0,服务器httpd.exe 应用程序错误
  7. html有几个文件夹,关于webpack打包问题,怎么打包成多个文件夹,每个文件夹下有相应的html,js和css?...
  8. 【Nodejs六】关于mongodb那些事
  9. python属性_Python属性()
  10. 调试错误,请回到请求来源地,重新发起请求。 错误代码 insufficient-isv-permissions 错误原因: ISV权限不足,建议在开发者中心检查对应功能是否已经添加
  11. 计算机仿真课程的心得体会,数学建模心得体会
  12. Mac电脑内存不足解决方法
  13. SPP Net 空间金字塔池化(Spatial Pyramid Pooling, SPP)原理
  14. 电脑硬盘坏了怎么修复
  15. tushare获取沪深300指数历史_TuShare -财经数据接口包
  16. 【SAP Abap】关于销售凭证VBKD业务数据表的使用与注意事项
  17. Ubuntu下,用键盘定义鼠标按键
  18. Atcoder TOYOTA SYSTEMS Programming Contest 2021(AtCoder Beginner Contest 228) B - Takahashi‘s Secret
  19. 两个整数之间的所有素数,素数个数,素数和
  20. 阿里云服务器cpu连续n天使用率为100%问题解决方案!

热门文章

  1. 京东云服务器使用教程
  2. 宁波大学 软件技术exp_2_1 (1)
  3. 台式机:喇叭+麦克风二合一转接头DIY
  4. conda的常用命令
  5. div层调整zindex属性无效原因分析及解决方法
  6. Windows无法启动某个服务--错误2:系统找不到指定的文件
  7. 图像的配准——MATLAB实现
  8. PTX JIT compiler failed
  9. 移植wifi无线网卡到arm linux上全过程
  10. excel导入mysql并批量查询_EXCEL批量导入到Sqlserver数据库并进行两表间数据的批量修改...