oracle-日期问题

1、月份差 

--MONTHS_BETWEEN(date2,date1) 


select months_between('19-12月-1999','19-3月-1999') from dual; 


select months_between(to_date('2000.05.20','yyyy.mm.dd'),to_date('2005.05.20','yyyy.dd')) from dual; 

2、时间差表达式 

--获取两时间的相差豪秒数 
select ceil((to_date('2018-05-02 00:00:00' , 'yyyy-mm-dd hh24:mi:ss') - to_date('2018-04-30 23:59:59' , 'yyyy-mm-dd hh24:mi:ss')) * 24 * 60 * 60 * 1000)  FROM DUAL; 


--获取两时间的相差秒数 
select ceil((to_date('2018-05-02 00:00:00' , 'yyyy-mm-dd hh24:mi:ss') - to_date('2018-04-30 23:59:59' , 'yyyy-mm-dd hh24:mi:ss')) * 24 * 60 * 60)  FROM DUAL; 


--获取两时间的相差分钟数 
select ceil(((to_date('2018-05-02 00:00:00' , 'yyyy-mm-dd hh24:mi:ss') - to_date('2018-04-30 23:59:59' , 'yyyy-mm-dd hh24:mi:ss'))) * 24 * 60)   FROM DUAL; 


--获取两时间的相差小时数 
select ceil((to_date('2018-05-02 00:00:00' , 'yyyy-mm-dd hh24:mi:ss') - to_date('2018-04-30 23:59:59' , 'yyyy-mm-dd hh24:mi:ss')) * 24)   FROM DUAL; 


--获取两时间的相差天数 
select ceil((to_date('2008-05-02 00:00:00' , 'yyyy-mm-dd hh24:mi:ss') - to_date('2008-04-30 23:59:59' , 'yyyy-mm-dd hh24:mi:ss')))  FROM DUAL; 
 

3、年份差


--获取两时间年份差 
select EXTRACT(year FROM to_date('2019-05-01','yyyy-mm-dd')) - EXTRACT(year FROM to_date('2018-04-30','yyyy-mm-dd')) years from dual; 

4、sysdate一般使用

select sysdate,add_months(sysdate,12) from dual;  --加1年 
select sysdate,add_months(sysdate,1) from dual;   --加1月 
select sysdate,TO_CHAR(sysdate+7,'yyyy-mm-dd HH24:MI:SS') from dual;  --加1星期 
select sysdate,TO_CHAR(sysdate+1,'yyyy-mm-dd HH24:MI:SS') from dual;  --加1天 
select sysdate,TO_CHAR(sysdate+1/24,'yyyy-mm-dd HH24:MI:SS') from dual;  --加1小时 
select sysdate,TO_CHAR(sysdate+1/24/60,'yyyy-mm-dd HH23:MI:SS') from dual;  --加1分钟 
select sysdate,TO_CHAR(sysdate+1/24/60/60,'yyyy-mm-dd HH23:MI:SS') from dual;  --加1秒 
select   sysdate+7   from   dual;                     --加7天

猜你喜欢

转载自www.cnblogs.com/monkeybrother/p/10118822.html