`

oracle数据库中日期加减函数

 
阅读更多

1.oracle中当前系统时间加减用法

select add_months(sysdate, 12) "NEW YEAR" from dual; /**系统时间+12个月后的时间**/
select extract(month from sysdate) "This Month" from dual; /**获取系统时间所在月份**/
select (sysdate + 1) "NEW DATE" from dual; /**系统时间+1天后的时间**/

 
2.下面一日期处理函数为网上看到一并写在这里

create or replace function DATEADD(datepart varchar2,
                                   num      number,
                                   indate   date) return date is
  Result     date;
  v_sql      varchar2(1000);
  v_datepart varchar2(30);
  v_ms       varchar2(13);
begin
  v_datepart := lower(datepart);
  /*
     Datepart         Abbreviations 
    year             yy, y
     quarter          qq, q
     month            mm, m
     day              dd, d
     week             wk, w
     hour             hh, h
     minute           mi, n
     second           ss, s
     millisecond      ms
  */
  case
    when v_datepart in ('year', 'yy', 'y') then
      v_sql := 'select :1 + interval ''' || num || ''' year from dual';
    when v_datepart in ('quarter', 'qq', 'q') then
      v_sql := 'select :1 + (interval ''3'' month) * ' || num ||
               ' from dual';
    when v_datepart in ('month', 'mm', 'm') then
      v_sql := 'select :1 + interval ''' || num || ''' month from dual';
    when v_datepart in ('week', 'wk', 'w') then
      v_sql := 'select :1 + (interval ''7'' day) * ' || num || ' from dual';
    when v_datepart in ('day', 'dd', 'd') then
      v_sql := 'select :1 + interval ''' || num || ''' day from dual';
    when v_datepart in ('hour', 'hh') then
      v_sql := 'select :1 + interval ''' || num || ''' hour from dual';
    when v_datepart in ('minute', 'mi', 'n') then
      v_sql := 'select :1 + interval ''' || num || ''' minute from dual';
    when v_datepart in ('second', 'ss', 's') then
      v_sql := 'select :1 + interval ''' || num || ''' second from dual';
    when v_datepart in ('millisecond', 'ms') then
      v_ms  := to_char(num / 1000, 'fm999999990.000');
      v_sql := 'select :1 + interval ''' || v_ms ||
               ''' second(9,3) from dual';
    else
      RAISE_APPLICATION_ERROR(-20001,
                              '''' || datepart ||
                              ''' is not a recognized dateadd option.');
  end case;

  execute immediate v_sql
    into Result
    using indate;

  return(Result);

EXCEPTION
  WHEN OTHERS THEN
    RAISE;
  
end DATEADD;

 

 

  • 大小: 57.4 KB
分享到:
评论

相关推荐

    ORACLE数据库智能化管理系统2012

    批量数据比较功能,增加了数字型字段4种(左右两边数据加减乘除)处理方式和4种行数据处理(左右两边互移或互复制行),可从数据源复合查询结果数据与目标数据进行运算,达到想要的结果等。 数据窗口右键菜单功能整合多种...

    Oracle查询优化日期运算实例详解

    在Oracle中,date类型可以直接加减天数,而加减月份要用add_months函数. select a.hiredate 雇用日期, a.hiredate + 5 加5天, a.hiredate - 5 减5天, add_months(hiredate, 5) 加5个月, add_months(hiredate, -...

    Oracle_Database_11g完全参考手册.part3/3

    Kevin Loney是Oracle数据库设计、开发、管理和调整方面的国际知名专家。作为金融界的一名企业数据库架构师,2002年他被Oracle Magazine提名为年度顾问。他的畅销书包括《Oracle Database 11gDBA手册》、Oracle ...

    Oracle_Database_11g完全参考手册.part2/3

    Kevin Loney是Oracle数据库设计、开发、管理和调整方面的国际知名专家。作为金融界的一名企业数据库架构师,2002年他被Oracle Magazine提名为年度顾问。他的畅销书包括《Oracle Database 11gDBA手册》、Oracle ...

    jdbc操作文档,数据库基本操作文档集合

    日期进行加减的一些规律: 日期-数字 = 日期 日期+数字 = 日期 日期-日期 = 数字(天数) 16.转换函数 (1).to_char:转换成字符串 a. 日期转换..............................后面文档自己下载

    2009达内SQL学习笔记

    保存在oracle数据库中的所有操作细节: spool oracleday01.txt :开始记录 spool off :开始保存细节 四、SELECT语句:选择操作、投影操作。 select:从一个或多个表中检索一个或多个数据列。包含信息:想选择...

    Sqlserver2000经典脚本

    │ 2.4.1 日期格式化处理.sql │ │ 2.4.2 日期推算处理.sql │ │ 2.4.3 特殊日期加减函数.sql │ │ 2.5.1 查询指定日期段内过生日的人员.sql │ │ 2.5.2 生成日期列表的函数.sql │ │ ...

    经典SQL脚本大全

    │ │ 2.4.3 特殊日期加减函数.sql │ │ 2.5.1 查询指定日期段内过生日的人员.sql │ │ 2.5.2 生成日期列表的函数.sql │ │ 2.5.3 工作日处理函数(标准节假日).sql │ │ 2.5.3 工作日处理函数(自定义节假日).sql...

    轻松学C#(图解版)

    7.3.4 继承中的构造函数 123 7.4 多态 124 7.5 抽象 128 7.5.1 抽象类、抽象方法的声明 129 7.5.2 抽象类的使用 129 7.5.3 抽象方法的使用 130 7.6 密封 132 7.6.1 密封类 132 7.6.2 密封方法 133 7.7 小结 134 7.8 ...

    PHP基础教程 是一个比较有价值的PHP新手教程!

    所有变量都是局部变量,为了使得定义的函数中可以使用外部变量,使用global语句。而你要将该变量的作用范围限制在该函数之内,使用static语句。 $g_var = 1 ; // 全局范围 function test() { global $g_var; // 这样...

    java 面试题 总结

    SessionBean在J2EE应用程序中被用来完成一些服务器端的业务操作,例如访问数据库、调用其他EJB组件。EntityBean被用来代表应用系统中用到的数据。 对于客户机,SessionBean是一种非持久性对象,它实现某些在服务器上...

    超级有影响力霸气的Java面试题大全文档

    SessionBean在J2EE应用程序中被用来完成一些服务器端的业务操作,例如访问数据库、调用其他EJB组件。EntityBean被用来代表应用系统中用到的数据。  对于客户机,SessionBean是一种非持久性对象,它实现某些在服务器...

Global site tag (gtag.js) - Google Analytics