oracle中關於日期問題的彙總!

2021-09-13 23:47:16 字數 3304 閱讀 8620

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中關於日期的獲取

最近的乙個功能定時任務要求在當天凌晨2點生成前一天的資料。涉及到資料庫時間的操作,特此記錄一下,整理關於日期獲取的筆記如下 獲取當前系統的前一天日期0點到23 59 59的時間 select trunc sysdate 1 trunc sysdate 1 1 1 86400 from dual 獲取...

oracle關於日期的操作

oracle to date用法 日期格式引數 含義說明 d 一周中的星期幾 day 天的名字,使用空格填充到9個字元 dd 月中的第幾天 ddd 年中的第幾天 dy 天的簡寫名 iw iso標準的年中的第幾周 iyyy iso標準的四位年份 yyyy 四位年份 yyy,yy,y 年份的最後三位,兩...

oracle函式 關於日期

日期常用函式 add months,last day,next day,months between,new time,round 函式用法 add months d,n 時間點d加上n個月 示例 select sysdate,add months sysdate,1 from dual 注 sys...