Oracle計算時間差表示式

2021-06-08 22:25:26 字數 4061 閱讀 9481

oracle計算時間差表示式 

一、--獲取兩時間的相差豪秒數 

select ceil((to_date('2008-05-02 00:00:00' , 'yyyy-mm-dd hh24-mi-ss') - to_date('2008-04-30 23:59:59' , 'yyyy-mm-dd hh24-mi-ss')) * 24 * 60 * 60 * 1000) 相差豪秒數 from dual; 

/* 相差豪秒數 

---------- 

86401000 

1 row selected 

*/ --獲取兩時間的相差秒數 

select ceil((to_date('2008-05-02 00:00:00' , 'yyyy-mm-dd hh24-mi-ss') - to_date('2008-04-30 23:59:59' , 'yyyy-mm-dd hh24-mi-ss')) * 24 * 60 * 60) 相差秒數 from dual; 

/* 相差秒數 

---------- 

86401 

1 row selected 

*/ --獲取兩時間的相差分鐘數 

select ceil(((to_date('2008-05-02 00:00:00' , 'yyyy-mm-dd hh24-mi-ss') - to_date('2008-04-30 23:59:59' , 'yyyy-mm-dd hh24-mi-ss'))) * 24 * 60)  相差分鐘數 from dual; 

/* 相差分鐘數 

---------- 

1441 

1 row selected 

*/ --獲取兩時間的相差小時數 

select ceil((to_date('2008-05-02 00:00:00' , 'yyyy-mm-dd hh24-mi-ss') - to_date('2008-04-30 23:59:59' , 'yyyy-mm-dd hh24-mi-ss')) * 24)  相差小時數 from dual; 

/* 相差小時數 

---------- 

25 1 row selected 

*/ --獲取兩時間的相差天數 

select ceil((to_date('2008-05-02 00:00:00' , 'yyyy-mm-dd hh24-mi-ss') - to_date('2008-04-30 23:59:59' , 'yyyy-mm-dd hh24-mi-ss')))  相差天數 from dual; 

/* 相差天數 

---------- 

2 1 row selected 

*/ ---------------------------------------- 

注:天數可以2個日期直接減,這樣更加方便 

---------------------------------------- 

--獲取兩時間月份差 

select (extract(year from to_date('2009-05-01','yyyy-mm-dd')) - extract(year from to_date('2008-04-30','yyyy-mm-dd'))) * 12 + 

extract(month from to_date('2008-05-01','yyyy-mm-dd')) - extract(month from to_date('2008-04-30','yyyy-mm-dd')) months 

from dual; 

/* months 

---------- 

13 1 row selected 

*/ -------------------------------------- 

注:可以使用months_between函式,更加方便 

-------------------------------------- 

--獲取兩時間年份差 

select extract(year from to_date('2009-05-01','yyyy-mm-dd')) - extract(year from to_date('2008-04-30','yyyy-mm-dd')) years from dual; 

/* years 

---------- 1 

二、 1.判斷某一天是週幾

select to_char(sysdate,'day') from dual;

select to_char(to_date('2007-11-20','yyyy-mm-dd'),'day') from dual;

2.求某月的天數

select to_char(last_day(sysdate),'dd') days from dual;

select to_char(last_day(to_date('200802','yyyymm')),'dd') from dual;

3.求某年的天數

select add_months(trunc(sysdate,'year'), 12) - trunc(sysdate,'year') from dual;

select add_months(trunc(to_date('2008','yyyy'),'year'), 12) - trunc(to_date('2008','yyyy'),'year') from dual;

4.求下個星期一的日期

在獲取之前可以設定日期語言,如:

alter session set nls_date_language='simplified chinese';

select next_day(sysdate,'星期一') from dual;

select next_day(sysdate,2) from dual; --後面的數字是從星期日開始算起,所以為2

alter session set nls_date_language='american';

select next_day(sysdate,'monday') from dual;

5.確定某天是當年的第幾周

select to_char(sysdate,'fmww') from dual;

select to_char(to_date('20071126','yyyymmdd'),'fmww') from dual;

6.確定某天是當月的第幾周

select to_char(sysdate,'ww') - to_char(trunc(sysdate,'mm'),'ww') + 1 from dual

select to_char(to_date('20071125','yyyymmdd'),'ww') - to_char(trunc(to_date('20071125','yyyymmdd'),'mm'),'ww') + 1 from dual

7.確定某天是當年的第幾天

select to_char(sysdate,'ddd') from dual

8.確定某天是當月的第幾天

select to_char(sysdate,'dd') from dual;

9.確定某天是一周的第幾天

select to_char(sysdate,'d') - 1 from dual; --oracle定義週日為一周的第一天,所以要減一

10.求兩個日期間的天數

select floor(sysdate - to_date('20071125','yyyymmdd')) from dual; 

11.求兩個日期間的月數

select floor(months_between(sysdate, to_date('20071031','yyyymmdd'))) from dual;

12.計算某天的小時、分、秒

select day, 

trunc(a*24) hours, 

trunc(a*24*60 - 60*trunc(a*24)) minutes, 

trunc(a*24*60*60 - 60*trunc(a*24*60)) seconds

from ( select trunc(sysdate) day, sysdate - trunc(sysdate) a from dual)

Oracle計算時間差表示式

oracle計算時間差表示式 獲取兩時間的相差豪秒數 select ceil to date 2008 05 02 00 00 00 yyyy mm dd hh24 mi ss to date 2008 04 30 23 59 59 yyyy mm dd hh24 mi ss 24 60 60 10...

Oracle計算時間差表示式

最近做一專案,需要計算兩時間差值,oracle對我來說比陌生,怎麼都計算不出來,後來在網上找到一些資料介紹oracle計算時間差的方法。總結了一下。有兩個日期資料start date,end date,欲得到這兩個日期的時間差 以天,小時,分鐘,秒,毫秒 天 round to number end ...

Oracle計算時間差表示式

這句是原創的 時間兩個時間只差單位是天 獲取兩時間的相差豪秒數 select ceil to date 2008 05 02 00 00 00 yyyy mm dd hh24 mi ss to date 2008 04 30 23 59 59 yyyy mm dd hh24 mi ss 24 60 ...