無論是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...