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 
    */

    类别:数据库 查看评论
  • 相关阅读:
    linux下shell显示-bash-4.1#不显示路径解决方法
    update chnroute
    An error "Host key verification failed" when you connect to other computer by OSX SSH
    使用dig查询dns解析
    DNS被污染后
    TunnelBroker for EdgeRouter 后记
    mdadm详细使用手册
    关于尼康黄的原因
    Panda3d code in github
    Python实例浅谈之三Python与C/C++相互调用
  • 原文地址:https://www.cnblogs.com/tiandi/p/1972536.html
Copyright © 2011-2022 走看看