Oracle日期加減計算 方法彙總

2021-07-24 12:48:53 字數 3223 閱讀 6050

無論是date還是timestamp都可以進行加減操作。

可以對當前日期加年、月、日、時、分、秒,操作不同的時間型別,有三種方法:

一、 使用內建函式numtodsinterval增加小時,分鐘和秒

二、 加乙個簡單的數來增加天

三、 使用內建函式add_months來增加年和月

方法一例:

對當前日期增加乙個小時:

sql> select sysdate, sysdate+numtodsinterval(1,』hour』) from dual ;

sysdate             sysdate+numtodsinte

——————- ——————-

2010-10-14 21:38:19 2010-10-14 22:38:19

對當前日期增加50分種

sql> select sysdate, sysdate+numtodsinterval(50,』minute』) from dual ;

sysdate             sysdate+numtodsinte

——————- ——————-

2010-10-14 21:39:12 2010-10-14 22:29:12

對當前日期增加45秒

sql> select sysdate, sysdate+numtodsinterval(45,』second』) from dual ;

sysdate             sysdate+numtodsinte

——————- ——————-

2010-10-14 21:40:06 2010-10-14 21:40:51

對當前日期增加3天

sql> select sysdate, sysdate+3 from dual ;

sysdate             sysdate+3

——————- ——————-

2010-10-14 21:40:46 2010-10-17 21:40:46

方法二例:

select sysdate + interval '1' day, sysdate - interval '2' day from dual;

select systimestamp + interval '1' day, systimestamp - interval '2' day from dual;

如上所示,我們可以通過給日期加減乙個時間間隔來計算日期,下面是更多的例子。

日期+ 1 年          sysdate + interval '1' year

日期+ 1 月          sysdate + interval '1' month

日期+ 1 日          sysdate + interval '1' day

日期+ 1 時          sysdate + interval '1' hour

日期+ 1 分          sysdate + interval '1' minute

日期+ 1 秒          sysdate + interval '1' second

日期+ 1 日1 時1 分    sysdate + interval '1 1:1' day to minute

如果計算的是 date 型別,我們還可以採用如下的方式。

date+ 1 日          sysdate + 1

date+ 1 時          sysdate + 1/(1*24)

date+ 1 分          sysdate + 1/(1*24*60)

date+ 1 秒          sysdate + 1/(1*24*60*60)

date+ 1 日1 時1 分    sysdate + 1 + 1/(1*24) + 1/(1*24*60)

方法三例:

對當前日期增加4個月

sql> select sysdate, add_months(sysdate,4) from dual ;

sysdate             add_months(sysdate,

——————- ——————-

2010-10-14 21:41:43 2011-02-14 21:41:43

當前日期增加2年

sql> select sysdate, add_months(sysdate,12*2) from dual ;

sysdate             add_months(sysdate,

——————- ——————-

2010-10-14 21:42:17 2012-10-14 21:42:17

那麼,時間之間的計算如何操作呢?很簡單,直接相減,一下操作會得出時間間隔:

select (date '2015-04-10' - date '2014-03-11') from dual

select (date '2015-04-10' - date '2014-03-11') year to month from dual

select (date '2015-04-10' - date '2014-03-11') day(3) to second from dual

select (timestamp '2015-04-10 14:52:19.000' - timestamp '2014-03-11 13:55:29.000') from dual

select (timestamp '2015-04-10 14:52:19.000' - timestamp '2014-03-11 13:55:29.000') year to month from dual

select (timestamp '2015-04-10 14:52:19.000' - timestamp '2014-03-11 13:55:29.000') day(3) to second from dual

一旦我們有了時間間隔,就可以抽出時間間隔的組成部分:

select extract(year from (date '2015-04-10' - date '2014-03-11') year to month) from dual

select extract(month from (date '2015-04-10' - date '2014-03-11') year to month) from dual

select extract(day from (date '2015-04-10' - date '2014-03-11') day(3) to second) from dual

oracle日期加減計算

oracle資料庫中有多種對日期加減的計算方法,廢話不多說,開始。1 直接加減。1 求當前時間及一天後 select sysdate,sysdate 1 from dual 輸出為 2018 1 24 14 05 19 2018 1 25 14 05 19 2 求當前時間及一小時後 select s...

oracle 日期加減計算

下一年 年加1 select sysdate,sysdate numtoyminterval 1,year from dual select sysdate,add months sysdate,12 from dual 上一年 年減1 select sysdate,sysdate numtoymi...

SQL各種日期計算方法

select dateadd mm,datediff mm,0,getdate 0 計算乙個月第一天 select dateadd wk,datediff wk,0,getdate 0 本週的星期一 select dateadd yy,datediff yy,0,getdate 0 本年的第一天 s...