select sysdate "當前時間",sysdate+1 "加一天", sysdate+1/24 "加一時", sysdate+1/24/60 "加一分", sysdate+1/24/60/60 "加一秒" from dual
輸出結果:
不過此種方法不能作月的加減,由於每個月的天數不同函數
select sysdate "當前時間",add_months(sysdate,1) "加一個月", add_months(sysdate,1*12) "加一年" from dual;
輸出結果:
code
numtoyminterval:num to Y M interval;
numtodsinterval:num to D S interval
第三種函數功能仍是比較強大的,可是拼寫字母太多,用的比較少,畢竟前兩種已經夠用了。blog
select sysdate,sysdate + numtodsinterval(1,'second') "加一秒", sysdate + numtodsinterval(1,'minute') "加一分", sysdate + numtodsinterval(1,'hour') "加一小時", sysdate + numtodsinterval(1,'day') "加一天", sysdate + numtoyminterval(1,'month') "加一個月", sysdate + numtoyminterval(1,'year') "加一年" from dual;
輸出結果:
ast
備註:當前時間是2019/7/8 10:23:49test
select sysdate,sysdate - to_date('20190701','yyyymmdd') from dual;
輸出:2019/7/8 10:23:49 | 7.43320601851852date
select floor(sysdate - to_date('20190701','yyyymmdd')) from dual;--floor:向下取整
輸出:7select
select ceil(sysdate - to_date('20190701','yyyymmdd')) from dual;--ceil:向上取整
輸出:8方法
select round(sysdate - to_date('20190701','yyyymmdd')) from dual;--round:四捨五入
輸出:7im
select months_between(to_date('20190708 111111','yyyy-mm-dd hh24:mi:ss'), to_date('20180708 233333','yyyy-mm-dd hh24:mi:ss')) from dual;
輸出:12img
select months_between(to_date('20190708','yyyy-mm-dd'),to_date('20180709','yyyy-mm-dd')) from dual;
輸出:11.9677419354839
select * from oa_leave where end_time>=to_date('20190701','yyyymmdd') and start_time<=to_date('20190705','yyyymmdd');
select * from oa_leave where (start_time,end_time) overlaps (to_date('20190701','yyyymmdd')-0.00001,to_date('20190705','yyyymmdd')+0.00001)--注:overlaps是開區間,通常使用方法1
輸出結果:
select greatest(start_time,to_date('20190701','yyyymmdd')),least(end_time,to_date('20190705','yyyymmdd')) from oa_leave where end_time>=to_date('20190701','yyyymmdd') and start_time<=to_date('20190705','yyyymmdd')
輸出結果: