zoukankan      html  css  js  c++  java
  • Oracle 日期运算 集合

    --1、oracle 日期加减


    select sysdate,add_months(sysdate,12) from dual;  --日期加一年
    /*SYSDATE                   ADD_MONTHS(SYSDATE,12)  
    ------------------------- -------------------------
    25-6月 -09                25-6月 -10              
    */
    select sysdate,add_months(sysdate,1) from dual;   --日期加一月
    /*
    SYSDATE                   ADD_MONTHS(SYSDATE,1)   
    ------------------------- -------------------------
    25-6月 -09                25-7月 -09              
    */
    select sysdate,sysdate+1 from dual;               --日期加一天
    /*
    SYSDATE                   SYSDATE+1               
    ------------------------- -------------------------
    25-6月 -09                26-6月 -09              
    */
    select to_char(sysdate,'YYYY-MM-dd hh24:mi:ss') oldtime,
    to_char(sysdate+1/24,'YYYY-MM-dd hh24:mi:ss') newtime
    from dual;                                        --时间加一个小时
    /*
    OLDTIME             NEWTIME           
    ------------------- -------------------
    2009-06-25 16:04:23 2009-06-25 17:04:23
    */
    select to_char(sysdate,'YYYY-MM-dd hh24:mi:ss') oldtime,
    to_char(sysdate+1/24/60,'YYYY-MM-dd hh24:mi:ss') newtime
    from dual;                                        --时间加一分钟
    /*
    OLDTIME             NEWTIME           
    ------------------- -------------------
    2009-06-25 16:06:13 2009-06-25 16:07:13
    */
    select to_char(sysdate,'YYYY-MM-dd hh24:mi:ss') oldtime,
    to_char(sysdate+1/24/60/60,'YYYY-MM-dd hh24:mi:ss') newtime
    from dual;                                        --时间加一秒钟
    /*
    OLDTIME             NEWTIME           
    ------------------- -------------------
    2009-06-25 16:07:28 2009-06-25 16:07:29
    */
    --减法就就把响应的+换成减-就行了。
    --2、连个日期的差
    --两个日期差的天数
    select to_date('2009-06-26','yyyy-mm-dd')-to_date('2009-01-01','yyyy-mm-dd') ts from dual;
    /*
    TS                   
    ----------------------
    176
    */
    --两个日期差的月数
    select months_between(to_date('2009-07-01','yyyy-mm-dd'),to_date('2009-01-01','yyyy-mm-dd')) ys from dual;
    /*
    YS                   
    ----------------------
    6
    */
    --两个日期差的年数,使用相差的月数除以12
    select (months_between(to_date('2009-07-01','yyyy-mm-dd'),to_date('2009-01-01','yyyy-mm-dd')))/12 ys from dual;
    /*
    YS                   
    ----------------------
    0.5
    */
    --2、其它
    --求每个月最后一天,上篇文章介绍了一个方法:
    select trunc(add_months(sysdate,1),'mm')-1 from dual;
    --30-6月 -09
    --其实oracle 提供了相应的函数last_day
    select last_day(sysdate) from dual;
    /*
    LAST_DAY(SYSDATE)       
    -------------------------
    30-6月 -09   
    */
    select last_day(to_date('2008-03-01','yyyy-mm-dd')) from dual;
    /*
    LAST_DAY(TO_DATE('2008-03-01','YYYY-MM-DD'))
    -------------------------
    31-3月 -08    
    */
    --求每个月的第一天,上篇文章介绍了一个方法:
    select trunc(sysdate,'mm') from dual;
    --01-6月 -09
    --我们也使用LAST_DAY和函数实现:求上一个月的最后一天然后再在加一天,就是当月的第一天
    select last_day(add_months(sysdate,-1))+1 fd from dual;
    /*
    FD                      
    -------------------------
    01-6月 -09     
    */
    --next_day用法:使用中文标示工作日
    select next_day(sysdate,'星期五') "下周五" from dual;
    /*
    下周五                     
    -------------------------
    03-7月 -09 
    */
    --使用数字标示工作日:1表示的是周日,2表示的是周一,3表示的是周二,依此类推。
    select next_day(sysdate,6) "下周五" from dual;
    /*
    下周五                     
    -------------------------
    03-7月 -09 
    */

    类别:数据库 查看评论
  • 相关阅读:
    String和StringBuffer、StringBuilder的区别
    猜字谜小游戏编程
    const 和非 const 函数重载
    沉溺于 Mac,沉溺于 XCode
    开源软件与自由软件的区别——个人体会
    C++/C宏定义中## 连接符与# 符的含义
    const 关键字用法代码观
    博客搬家
    注销、关闭和重启计算机
    c/c++笔试题——const类型的成员函数内部如何改变成员变量
  • 原文地址:https://www.cnblogs.com/tiandi/p/1972536.html
Copyright © 2011-2022 走看看