Oracle日期加減
Oracle中日期進行加減可以使用多種方式,以下介紹三種
一種是針對天的操作,適用於對日,時,分,秒的操作,
一種是對月的操作,適用於月,年的操作,
一種是使用INTERVAL函式,適用於年,月,日,時,分,秒的操作
1.直接加減數字
select sysdate "當前時間",sysdate+1 "當前時間加一天" from dual ; //加一天
靈活使用
SELECT
SYSDATE "當前時間",
SYSDATE + 1 "加一天",
SYSDATE + (1 / 24) "加一小時",
SYSDATE + (1 / 24 / 60) "加一分鐘",
SYSDATE + (1 / 24 / 60 / 60) "加一秒鐘",
SYSDATE - 1 "減一天"
FROM
dual;
查詢結果如下:
2.通過ADD_MONTHS()函式
select sysdate "當前時間",ADD_MONTHS(sysdate, 1) "加一月" from dual ; //加一個月
靈活使用
SELECT
SYSDATE "當前時間",
ADD_MONTHS (SYSDATE, 1) "加一月",
ADD_MONTHS (SYSDATE, - 1) "減一月",
ADD_MONTHS (SYSDATE, 1 * 12) "加一年",
ADD_MONTHS (SYSDATE, - 1 * 12) "減一年"
FROM
dual;
查詢結果如下:
3.使用INTERVAL函式
語法:INTERVAL '時間差數值' { YEAR | MONTH | DAY | HOUR | MINUTE | SECODE} (精度數值)
得出的是相應型別的時間差,注意精度數值範圍是1-9,不寫預設值是2,精度不匹配時間差數值會報錯
例如:當前時間加1,11,111年
SELECT
SYSDATE "當前時間",
SYSDATE + INTERVAL '1' YEAR "加1年", //精度數值不寫時是預設兩位,此處可以寫精度為1-9
SYSDATE + INTERVAL '11' YEAR "加11年", //此處可以不寫,可以是1-9
SYSDATE + INTERVAL '11' YEAR(2) "加11年", // 可以寫2-9
SYSDATE + INTERVAL '111' YEAR(3) "加111年", //此處必須寫精度,精度值3-9
SYSDATE + INTERVAL '111' YEAR (9) "加111年" //精度值可以大於當前精度,不能小於當前數值精度,不能超過9
FROM
dual;
查詢結果:
靈活運用
SELECT
SYSDATE "當前時間",
SYSDATE + INTERVAL '1' YEAR "加一年",
SYSDATE + INTERVAL '-1' YEAR "減一年",
SYSDATE + INTERVAL '1' MONTH "加一月",
SYSDATE + INTERVAL '1' DAY "加一天",
SYSDATE + INTERVAL '1' HOUR "加一小時",
SYSDATE + INTERVAL '1' MINUTE "加一分鐘",
SYSDATE + INTERVAL '1' SECOND "加一秒"
FROM
dual;
結果如下:
精度的使用同上,當然oracle資料庫對於時間大小也是有限制的,年份範圍是 -4713 和 +9999 之間, 且不為 0