--********************日期函数
--获取当前系统时间SELECT SYSDATE FROM dual;
获取的是当前系统的时间
--查询距离今天3天后,和3天前的日期SELECT SYSDATE 今天,SYSDATE-3 三天前,SYSDATE+3 三天后 FROM dual;
SELECT e.hiredate 入职日期,SYSDATE 今天,SYSDATE-e.hiredate 入职到今天的天数,SYSDATE-10-e.hiredate 十天前的入职天数FROM emp e;
--使用trunc截取天数
SELECT e.hiredate 入职日期,SYSDATE 今天,trunc(SYSDATE-e.hiredate) 入职到今天的天数,trunc(SYSDATE-10-e.hiredate) 十天前的入职天数FROM emp e;
--ADD_MONTHS(日期,数字)
SELECT SYSDATE 当前日期,add_months(SYSDATE,3) 三个月之后的日期,add_months(SYSDATE,-3) 三个月之前的日期,add_months(SYSDATE,60) 六十个月之后的日期FROM dual;
SELECT e.empno,e.ename,e.hiredate,add_months(e.hiredate,3)入职三个月的日期FROM emp e;
SELECT SYSDATE 当前日期,next_day(SYSDATE,'星期五') 下个星期五,next_day(SYSDATE,'星期一') 下个星期一FROM dual;
SELECT SYSDATE,last_day(SYSDATE) FROM dual;
获取当前月的最后一天日期
--查询所有在入职日期在当月最后第三天入职的员工,最后一天-2
SELECT e.empno,e.ename,e.hiredateFROM emp eWHERE e.hiredate=last_day(e.hiredate)-2;
SELECT e.empno,e.ename,e.hiredate,trunc(months_between(SYSDATE,e.hiredate)) 入职的月数,trunc(months_between(SYSDATE,e.hiredate)/12) 入职的年数FROM emp e;
SELECT e.empno,e.ename,e.hiredate,TRUNC(months_between(SYSDATE,e.hiredate)/12) 年,TRUNC(MOD(months_between(SYSDATE,e.hiredate),12)) 月,TRUNC(SYSDATE-add_months(e.hiredate,months_between(SYSDATE,e.hiredate))) 日FROM emp e;
SELECT SYSDATE,EXTRACT(YEAR FROM SYSDATE)年,EXTRACT(MONTH FROM SYSDATE) 月,EXTRACT(DAY FROM SYSDATE) 日FROM dual;
--从时间戳中取出年,月,日,时,分,秒
SELECT SYSTIMESTAMP,EXTRACT(YEAR FROM SYSTIMESTAMP)年,EXTRACT(MONTH FROM SYSTIMESTAMP) 月,EXTRACT(DAY FROM SYSTIMESTAMP) 日,EXTRACT(HOUR FROM SYSTIMESTAMP) 时,EXTRACT(MINUTE FROM SYSTIMESTAMP) 分,EXTRACT(SECOND FROM SYSTIMESTAMP) 秒FROM dual;