日期函数

来源:互联网 发布:淘宝卖家怎么查淘宝客 编辑:程序博客网 时间:2024/06/11 02:36
/*
日期函数
*/


--sysdate:返回当前系统的日期时间
SELECT sysdate FROM dual;


--日期类型和数字类型可以做加减运算:一个日期加减一个数字返回的还是一个日期(单位是天)
SELECT sysdate+3 FROM dual;
SELECT sysdate-100 FROM dual;
SELECT sysdate+1/24/60*25 FROM dual;--25分钟以后


SELECT sysdate+1/24*2 FROM dual;-- 往后推两个小时


--一个日期减去另外一个日期返回的是两个日期间隔的天数
SELECT hiredate,trunc(sysdate-hiredate) AS 间隔天数 FROM emp;
SELECT hiredate,round(sysdate-hiredate,3) AS 间隔天数 FROM emp;
SELECT hiredate,sysdate-hiredate AS 间隔天数 FROM emp;




SELECT hiredate,round((sysdate-hiredate)/365) AS 间隔天数 FROM emp;
--months_between(日期1,日期2):返回两个日期间隔多少个月
SELECT round(months_between(sysdate,hiredate)/12) AS 间隔月 FROM emp;


--查询每个员工的编号,姓名,入职日期,工龄
SELECT employee_id,last_name,hire_date,
       trunc(months_between(sysdate,hire_date)/12) AS 工龄
FROM   employees;


--add_months(日期,N):给一个日期加减若干个月,返回一个新日期,N为正数表示加,负数表示减
SELECT add_months(sysdate,-12) FROM dual;


--查询入职超过20年的员工信息(months_between和add_months两种方式)
SELECT *
FROM   emp
WHERE  trunc(months_between(sysdate,hiredate)/12)>=20;
--
SELECT *
FROM   emp
WHERE  add_months(hiredate,20 * 12)<=sysdate;


SELECT *
FROM   emp
WHERE  add_months(sysdate,-20 * 12)>=hiredate;


--next_day(日期,星期几):返回以指定日期为准,下一个最近的星期几的日期
SELECT next_day(sysdate,'星期五') FROM dual;


--可以用数字1~7代表日~六1表示星期天1-7,表示星期天-到星期六
SELECT next_day(sysdate,2) FROM dual;


--last_day(日期):返回指定日期的月最后一天的日期
SELECT last_day(sysdate) FROM dual;


--round(日期[,日期单位]):对日期进行四舍五入
SELECT round(sysdate) FROM dual;--以中午12点为界,超过12点,往前进一天,没有超过就是当天的日期
SELECT round(to_date('2016-05-14 10:12:00','yyyy/mm/dd HH24:mi:ss'),'year') FROM dual;
SELECT round(sysdate,'month') FROM dual;--以这个月的15号为界,超过15号往前进一个月第一天,没有则取当前月的第一天
SELECT round(sysdate,'year') FROM dual;--以6月份为界


--trunc(日期[,日期单位]):对日期进行截断
SELECT trunc(sysdate) FROM dual;
SELECT trunc(sysdate,'month') FROM dual;
SELECT trunc(sysdate,'year') FROM dual;
0 0