15 oracle 計算兩個時間的差值

2021-08-04 21:09:38 字數 4895 閱讀 4172

第一部分:

有兩個日期資料start_date,end_date,欲得到這兩個日期的時間差(以天,小時,分鐘,秒,毫秒):

天:

round(to_number(end_date - start_date))

小時:

round(to_number(end_date - start_date) * 24)

分鐘:

round(to_number(end_date - start_date) * 24 * 60)

秒:

round(to_number(end_date - start_date) * 24 * 60 * 60)

毫秒:

round(to_number(end_date - start_date) * 24 * 60 * 60 * 60)

取得與系統時間相差某乙個範圍的時間值的記錄的寫法,舉例:

select * from telephone_book where round(to_number(sysdate - book_date) * 24) between 72 and 96

獲得與系統時間相差大於72小時小於96小時的記錄。 

--天的間隔

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

--獲得相隔時間的相差天數

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;

--獲得相隔時間的相差小時數

select ceil((to_date('2008-06-02 10: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;

--獲得相隔時間的相差分鐘數

select ceil(((to_date('2008-05-12 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;

--獲得相隔時間的相差秒數

select ceil((to_date('2011-08-16 14:03:20', 'yyyy-mm-dd hh24-mi-ss') -

to_date('2011-08-16 11:00:20', 'yyyy-mm-dd hh24-mi-ss')) * 24 * 60 * 60) 相差秒數

from dual;

第二部分:

oracle兩個時間相減預設的是天數

oracle 兩個時間相減預設的是天數*24 為相差的小時數

oracle 兩個時間相減預設的是天數*24*60 為相差的分鐘數

oracle 兩個時間相減預設的是天數*24*60*60 為相差的秒數

--months_between(date2,date1) 

給出date2-date1的月份 

sql> select months_between('19-12月-1999','19-3月-1999') mon_between from dual; 

mon_between 

----------- 

9 sql>select months_between(to_date('2000.05.20','yyyy.mm.dd'),to_date('2005.05.20','yyyy.dd')) mon_betw from dual; 

mon_betw 

--------- 

-60 

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 select sysdate,add_months(sysdate,12) from dual;  --加1年 

select sysdate,add_months(sysdate,1) from dual;   --加1月 

select sysdate,to_char(sysdate+7,'yyyy-mm-dd hh24:mi:ss') from dual;  --加1星期 

select sysdate,to_char(sysdate+1,'yyyy-mm-dd hh24:mi:ss') from dual;  --加1天 

select sysdate,to_char(sysdate+1/24,'yyyy-mm-dd hh24:mi:ss') from dual;  --加1小時 

select sysdate,to_char(sysdate+1/24/60,'yyyy-mm-dd hh23:mi:ss') from dual;  --加1分鐘 

select sysdate,to_char(sysdate+1/24/60/60,'yyyy-mm-dd hh23:mi:ss') from dual;  --加1秒 

select   sysdate+7   from   dual;                     --加7天

Oracle 計算兩個時間的差值

oracle 計算兩個時間的差值 有兩個日期資料start date,end date,欲得到這兩個日期的時間差 以天,小時,分鐘,秒,毫秒 天 round to number end date start date 小時 round to number end date start date 24...

Oracle 計算兩個時間的差值

有兩個日期資料start date,end date,欲得到這兩個日期的時間差 以天,小時,分鐘,秒,毫秒 天 round to number end date start date 小時 round to number end date start date 24 分鐘 round to numb...

oracle 兩個時間相減

oracle兩個時間相減預設的是天數 oracle 兩個時間相減預設的是天數 24 為相差的小時數 oracle 兩個時間相減預設的是天數 24 60 為相差的分鐘數 oracle 兩個時間相減預設的是天數 24 60 60 為相差的秒數 months between date2,date1 給出d...