第一部分:
有兩個日期資料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...