程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> Oracle日期操作全攻略

Oracle日期操作全攻略

編輯:Oracle數據庫基礎

本文查找了很多相關書籍,查找了近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;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved