oracle 中的日期函数

前端之家收集整理的这篇文章主要介绍了oracle 中的日期函数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
当有了系统日期之后就可以通过下的三个公式来进行一些简单计算:
  • 日期 + 数字 = 日期,表示若干天之后的日期;
  • 日期 – 数字 = 日期,表示若干天之前的 日期;
  • 日期 – 日期 = 数字,表示两个日期之间的隔天。
  • 计算两个日期之间所经历的月数: MONTHS_BETWEEN( 日期 1 | 列 1,日期 2 | 列 2)
  • 加上指定月之后的日期:ADD_MONTHS(日期|列,月数)
  • 求出指定的下一个一周时间数的日期:日期 NEXT_DAY(日期|列,一周时间数)
    • sql> select next_day(sysdate,'星期一') from dual;
    • NEXT_DAY(SYSDA
    • --------------
    • 08-8月 -16
  • 求出指定日期所在月的最后一天日期:日期 LAST_DAY(日期|列)
    • sql> select LAST_DAY(SYSDATE) FROM dual;
    • LAST_DAY(SYSDA
    • --------------
    • 31-8月 -16

举例1:对雇员表emp(eno,ename,hiredate,sal),计算每一位雇员到今天为止的雇佣年限。

例如:今天是2016年08月12日,JOHN雇佣日期是:1981年06年09日,那么到今天他已经在公司服务了35年、2个月、3天。

思路:

第一步: 计算出每一位雇员到今天为止的佣年份,直接利用月数除 12

SELECT ename,hiredate,TRUNC(MONTHS_BETWEEN(SYSDATE,hiredate)/12) year FROMemp;

第二步: 计算月 ,在进行年的时候发现存有小数,这些就包含了月

SELECT ename,hiredate)/12) year,

TRUNC(MOD(MONTHS_BETWEEN(SYSDATE,hiredate),12)) months

FROM emp;

第三步: 计算天数,对于计算天数,实际上只学会了一个公式“日期 1 – 日期 2 = 天数”,于是分析日期:
日期 1:应该是当前日期“ SYSDATE”;
日期 2:应该是已经剔除掉了过月之后的日期。


SELECT ename,

TRUNC(MONTHS_BETWEEN(SYSDATE,12)) months

TRUNC(SYSDATE-ADD_MONTHS(hiredate,MONTHS_BETWEEN(SYSDATE,hiredate))) day

FROM emp;

举例2:查询出在每个雇员佣所月倒数第二天的全部信息

SELECT ename,LAST_DAY(hiredate)-2 FROM emp WHERE LAST_DAY(hiredate)-2 =hiredate;

猜你在找的Oracle相关文章