• 在Oracle中计算两个日期间隔的天数、月数和年数


    一、天数:

    在Oracle中,两个日期直接相减,便可以得到天数;

    select to_date('08/06/2015','mm/dd/yyyy')-to_date('07/01/2015','mm/dd/yyyy') from dual;

    二、月数:

    计算月数,需要用到months_between函数;

    select months_between(to_date('01/31/2015','mm/dd/yyyy'),to_date('12/31/2014','mm/dd/yyyy')) "MONTHS" FROM DUAL;

    select months_between(to_date('01/01/2015','mm/dd/yyyy'),to_date('12/31/2014','mm/dd/yyyy')) "MONTHS" FROM DUAL;

    select * from xuesheng where months_between(sysdate,t_birthday)/12>20;  查询年龄超过20岁的学生

    三、年数:

    计算年数,是通过计算出月数,然后再除以12;select trunc(months_between(to_date('08/06/2015','mm/dd/yyyy'),to_date('08/06/2013','mm/dd/yyyy'))/12) from dual; 

    to_number()  , To_number(varchar2 or char,’format model’)

    add_months(), 

    oracle中的常用的函数的总结:

    1、add_months(x,y)或者add_months(times,months)函数:
        (1)用途:这个函数用于计算在时间x之上机上Y个月后的时间值,要是Y的值为负数的话就是在
               这个时间点之间的时间值(这个时间-Y个月)。
        (2)用法实例:
            A:--从emp表查询列出来公司就职时间超过24年的员工名单

                select ename, hiredate
                  from emp
                 where hiredate <= add_months(sysdate, -288);--负数代表系统时间(sysdate)之前的24年的时间-288 = -24*12
            B:--查询出在员工'SCOTT'入职一年后入职的员工的信息
                select ename, a.hiredate, sal
                  from emp a, (select hiredate from emp where ename = 'SCOTT') b
                 where a.hiredate > = add_months(b.hiredate, 12);

                解析:上面的查询思路如下
                a:在from语句的后面将员工'SCOTT'的入职时间查出放在一个表里,表的别名为b
                b:将上面的b表再次作为查询表
                c:然后利用add_months(x,y)函数在b表的hiredate之后的12个月作为查询条件
            C:--查询半年前的时间
                select add_months(sysdate,-6) from dual;

                解析:dual是oracle提供的最小功能表,它只有一行一列

    来自:https://blog.csdn.net/u013991521/article/details/79293846

      https://blog.csdn.net/baidu_36695217/article/details/79798531

  • 相关阅读:
    Spring注解(环境)
    Spring注解(赋值相关)
    C#:关联程序和文件
    C#: 获取执行程序所在路径和启动资源管理器
    C#:WPF绘制问题
    WPF:窗体置顶
    C#:屏幕显示区域问题
    C#:文件、文件夹特别操作
    C#:插件、框架
    WPF:MenuItem样式
  • 原文地址:https://www.cnblogs.com/brianlai/p/10305860.html
Copyright © 2020-2023  润新知