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

    类别:数据库 查看评论
  • 相关阅读:
    视觉SLAM(五)特征点法视觉里程计 后续作业
    在TUMVI数据集上测试VINS-Fusion算法
    视觉SLAM作业(四) 相机模型与非线性优化
    视觉SLAM(三)李群与李代数 后续作业
    -- Could not find the required component 'pcl_ros'. The following CMake error indicates that you either
    ZED stereolabs 配置踩过的坑
    视觉SLAM十四讲实验补充
    视觉SLAM十四讲(第二版)第十二讲笔记
    视觉SLAM十四讲(第二版)第十一讲笔记
    视觉SLAM十四讲(第二版)第十讲笔记
  • 原文地址:https://www.cnblogs.com/tiandi/p/1972536.html
Copyright © 2020-2023  润新知