本文查找了很多相关书籍,查找了近30种Oracle日期常用操作,从基础的年、月、日的表示,到稍微复杂一点的年初至今的天数,再到更难点的计算工作日的方法都有涉及,应该还是比较全面的。
一、Oracle日期操作中的常用操作
1.to_char(sysdate,'q') 季
2.to_char(sysdate,'yyyy')年
3.to_char(sysdate,'mm')月
4.to_char(sysdate,'dd')日
5.to_char(sysdate,'d')星期中的第几天
6.to_char(sysdate,'DAY')星期几
7.to_char(sysdate,'ddd')一年中的第几天
8.extract(year from query_cxrq)年度
9.extract(month from query_cxrq)月份
10.extract(day from query_cxrq)日
例:select extract(month from sysdate) from dual
二、Oracle日期操作中的简单操作
1.上月末的日期:select last_day(add_months(sysdate, -1)) from dual;
2.本月的***一秒:select trunc(add_months(sysdate,1),'MM') - 1/24/60/60 from dual
3.本周星期一的日期:select trunc(sysdate,'day')+1 from dual
4.年初至今的天数:select ceil(sysdate - trunc(sysdate, 'year')) from dual;
5.今天是今年的第几周:select to_char(sysdate,'fmww') from dual
6.今天是本月的第几周:SELECT TO_CHAR(SYSDATE,'WW') - TO_CHAR(TRUNC(SYSDATE,'MM'),'WW') + 1 AS "weekOfMon" FROM dual
7.本月的天数:SELECT to_char(last_day(SYSDATE),'dd') days FROM dual
8.今年的天数:select add_months(trunc(sysdate,'year'), 12) - trunc(sysdate,'year') from dual
9.下个星期一的日期:SELECT Next_day(SYSDATE,'monday') FROM dual
10.sdate+(5/24/60/60) 在系统时间基础上延迟5秒
11.sdate+5/24/60 在系统时间基础上延迟5分钟
12.sdate+5/24 在系统时间基础上延迟5小时
13.sdate+5 在系统时间基础上延迟5天
14.d_months(sysdate,-5) 在系统时间基础上延迟5月
15.d_months(sysdate,-5*12) 在系统时间基础上延迟5年
16.间隔天数:
两个日期间的天数(日期相减得天数)
select floor(sysdate - to_date('20020405','yyyymmdd')) from dual;
Oracle日期操作中的2个计算方法
1.计算工作日方法
create table t(s date,e date);
alter session set nls_date_format = 'yyyy-mm-dd';
insert into t values('2003-03-01','2003-03-03');
insert into t values('2003-03-02','2003-03-03');
insert into t values('2003-03-07','2003-03-08');
insert into t values('2003-03-07','2003-03-09');
insert into t values('2003-03-05','2003-03-07');
insert into t values('2003-02-01','2003-03-31');
这里假定日期都是不带时间的,否则在所有日期前加trunc即可。
2.判断当前时间是上午下午还是晚上
SELECT CASE
WHEN to_number(to_char(SYSDATE,'hh24')) BETWEEN 6 AND 11 THEN '上午'
WHEN to_number(to_char(SYSDATE,'hh24')) BETWEEN 11 AND 17 THEN '下午'
WHEN to_number(to_char(SYSDATE,'hh24')) BETWEEN 17 AND 21 THEN '晚上'
END
FROM dual;
【编辑推荐】