ORACLE 日期加減操作

2022-07-26 07:15:17 字數 4381 閱讀 7111

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

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

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

2 加乙個簡單的數來增加天

3 使用內建函式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

對當前日期增加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

timestamp的操作方法與上面類似;

求兩個日期之差:

例:求2007-5-23 21:23:34與當前時間之間的差值。

sql> select sysdate-to_date(』20070523 21:23:34′,』yyyy-mm-dd hh24:mi:ss』) dt from

dual ;

dt———-

1240.01623

如果兩個日期直接相減,得到的結果是乙個資料型,我們可能想要得到兩個日期相差值表現形式為:

**年**月**日 **:**:**

sql> select numtoyminterval(months_between(dt1, dt2), 『month』) mon,

2         numtodsinterval(dt1-(add_months(dt2,trunc(months_between(dt1, dt2)))

),』day』) day

3    from (select sysdate dt1,

4                 to_date(』20070523 21:23:34′, 『yyyy-mm-dd hh24:mi:ss』) dt2

5          from dual)

6 ;

mon                  day

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

+000000003-04        +000000021 00:40:15.999999999

即:3年 4 個月 21 天 00:40:15.99999999

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

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

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

2 加乙個簡單的數來增加天

3 使用內建函式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

對當前日期增加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

timestamp的操作方法與上面類似;

求兩個日期之差:

例:求2007-5-23 21:23:34與當前時間之間的差值。

sql> select sysdate-to_date(』20070523 21:23:34′,』yyyy-mm-dd hh24:mi:ss』) dt from

dual ;

dt———-

1240.01623

如果兩個日期直接相減,得到的結果是乙個資料型,我們可能想要得到兩個日期相差值表現形式為:

**年**月**日 **:**:**

sql> select numtoyminterval(months_between(dt1, dt2), 『month』) mon,

2         numtodsinterval(dt1-(add_months(dt2,trunc(months_between(dt1, dt2)))

),』day』) day

3    from (select sysdate dt1,

4                 to_date(』20070523 21:23:34′, 『yyyy-mm-dd hh24:mi:ss』) dt2

5          from dual)

6 ;

mon                  day

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

+000000003-04        +000000021 00:40:15.999999999

即:3年 4 個月 21 天 00:40:15.99999999

ORACLE 日期加減操作

無論是date還是timestamp都可以進行加減操作。可以對當前日期加年 月 日 時 分 秒,操作不同的時間型別,有三種方法 1 使用內建函式numtodsinterval增加小時,分鐘和秒 2 加乙個簡單的數來增加天 3 使用內建函式add months來增加年和月 例 對當前日期增加乙個小時 ...

ORACLE 日期加減操作

oracle 日期加減操作 無論是date還是timestamp都可以進行加減操作。可以對當前日期加年 月 日 時 分 秒,操作不同的時間型別,有三種方法 1 使用內建函式numtodsinterval增加小時,分鐘和秒 2 加乙個簡單的數來增加天 3 使用內建函式add months來增加年和月 ...

ORACLE 日期加減操作

無論是date還是timestamp都可以進行加減操作。可以對當前日期加年 月 日 時 分 秒,操作不同的時間型別,有三種方法 1 使用內建函式numtodsinterval增加小時,分鐘和秒 2 加乙個簡單的數來增加天 3 使用內建函式add months來增加年和月 例 對當前日期增加乙個小時 ...