zoukankan      html  css  js  c++  java
  • oracle对日期date类型操作的函数

     

    无论是DATE还是timestamp都可以进行加减操作

    1. 加一个简单的数来增加天
    2. max,min来求其最大最小日期
    3. avg,sum就只能先转成数字类型才可用
    4. 使用内置函数add_months来增加年和月
    5. 使用内置函数numtoyminterval增加年,月
    6. 使用内置函数numtodsinterval增加小时,分钟和秒

    umtoyminterval函数——数字转换函数

    语法:NUMTOYMINTERVAL ( n , 'char_expr' )
    char_expr:日期描述,可以是YEAR和MONTH
    作用:可以将数字转换成相应的日期单位时间
    NUMTOYMINTERVAL ( 1, 'MONTH' ) 表示一个月
    NUMTOYMINTERVAL ( 1, 'YEAR' ) 表示一年

    numtodsinterval函数——数字转换函数

    语法:NUMTOYMINTERVAL ( n , 'char_expr' )
    char_expr:日期描述,可以是day、hour、minute、second
    作用:可以将数字转换成相应的日期单位时间
    NUMTOYMINTERVAL ( 1, 'day' ) 表示一天
    NUMTOYMINTERVAL ( 1, 'hour' ) 表示一个小时

    通常当我们使用add_month添加月时,如果输入是本月月底的日期,那么得到的也是月底的日期,
    比如add_months(to_date('2007-02-28','yyyy-mm-dd'),1)得到的就会是'2007-03-31',而不是'2007-03-28'。
    此时,如果使用的是to_date('2007-02-28','yyyy-mm-dd')+numtoyminterval(1,'month'),那么得到的就是'2007-03-28'。

    例子示范

    对当前日期增加一个小时:
    SQL> select sysdate, sysdate+numtodsinterval(1,’hour’) from dual ;

    SYSDATE             SYSDATE+NUMTODSINTE
    ——————- ——————-
    2010-10-14 21:38:19 2010-10-14 22:38:19
    对当前日期增加50分种
    SQL> select sysdate, sysdate+numtodsinterval(50,’minute’) from dual ;

    SYSDATE             SYSDATE+NUMTODSINTE
    ——————- ——————-
    2010-10-14 21:39:12 2010-10-14 22:29:12
    对当前日期增加45秒
    SQL> select sysdate, sysdate+numtodsinterval(45,’second’) from dual ;

    SYSDATE             SYSDATE+NUMTODSINTE
    ——————- ——————-
    2010-10-14 21:40:06 2010-10-14 21:40:51
    对当前日期增加3天
    SQL> select sysdate, sysdate+3 from dual ;

    SYSDATE             SYSDATE+3
    ——————- ——————-
    2010-10-14 21:40:46 2010-10-17 21:40:46
    对当前日期增加4个月
    SQL> select sysdate, add_months(sysdate,4) from dual ;

    SYSDATE             ADD_MONTHS(SYSDATE,
    ——————- ——————-
    2010-10-14 21:41:43 2011-02-14 21:41:43

    当前日期增加2年
    SQL> select sysdate, add_months(sysdate,12*2) from dual ;

    SYSDATE             ADD_MONTHS(SYSDATE,
    ——————- ——————-
    2010-10-14 21:42:17 2012-10-14 21:42:17

    timestamp的操作方法与上面类似;
    求两个日期之差:
    例:求2007-5-23 21:23:34与当前时间之间的差值。
    SQL> select sysdate-to_date(’20070523 21:23:34′,’yyyy-mm-dd hh24:mi:ss’) dt from
    dual ;

    DT
    ———-
    1240.01623

  • 相关阅读:
    [C++] Class (part 2)
    [C++] Class (part 1)
    [c++] Inline Function
    [C++] in-class initializer
    简易线程池Thread Pool
    js里function的apply vs. bind vs. call
    webix custom component-九宫格
    webix源码阅读
    比特币的原理+问题
    wpf中UserControl的几种绑定方式
  • 原文地址:https://www.cnblogs.com/rdchen/p/10482132.html
Copyright © 2011-2022 走看看