直接加減數字 select sysdate 當前時間, sysdate + 1 加一天, sysdate - 1 減一天, sysdate + (1 / 24) 加一小時, sysdate + (1 / 24 / 60) 加一分鐘 from dual; 使用add_months()函數 select ...
-
直接加減數字
select sysdate 當前時間, sysdate + 1 加一天, sysdate - 1 減一天, sysdate + (1 / 24) 加一小時, sysdate + (1 / 24 / 60) 加一分鐘 from dual;
-
使用add_months()函數
select sysdate 當前時間, add_months(sysdate, 1) 加一月, add_months(sysdate, - 1) 減一月 from dual;
-
使用interval()函數
select sysdate as 當前時間, sysdate + interval '1' year as 加一年, sysdate + interval '-1' year as 減一年, sysdate + interval '1' month as 加一月, sysdate + interval '1' day as 加一天, sysdate + interval '1' hour as 加一小時, sysdate + interval '1' minute as 加一分鐘, sysdate + interval '1' second as 加一秒 from dual;
-
這裡需要註意的是,interval() 函數的精度問題。
語法:interval ‘時間差數值’ { year | month | day | hour | minute | secode} (精度數值)
精度數值範圍是 1-9,不寫預設值是 2,精度不匹配時間差數值會報錯.
select sysdate + interval '100' year from dual; -- ORA-01873: 間隔的前導精度太小
此時,‘111’ 為 3 位有效數值,該處 year(n), n < 3 就會報錯,註意預設 n 是 2.
select sysdate + interval '100' year(3) from dual;
-
使用add_months加一月和使用interval()加一月的區別
select add_months(to_date('2023/11/30','yyyy/mm/dd'), 1) from dual; --返回2023/12/31 select to_date('2023/11/30','yyyy/mm/dd') + interval '1' month from dual --返回2023/12/30
add_months如果時間參數是那個月的最後一天,再加也是會到結果月的最後一天;interval只是普通的加30天