–MONTHS_BETWEEN(date2,date1)
给出date2-date1的月份
SQL> select months_between(’19-12月-1999′,’19-3月-1999′) mon_between from dual;
MON_BETWEEN
———–
9
SQL>select months_between(to_date(‘2000.05.20′,’yyyy.mm.dd’),to_date(‘2005.05.20′,’yyyy.dd’)) mon_betw from dual;
MON_BETW
———
-60
Oracle计算时间差表达式
–获取两时间的相差豪秒数
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’)) * 24 * 60 * 60 * 1000) 相差豪秒数 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’)) * 24 * 60 * 60) 相差秒数 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’))) * 24 * 60) 相差分钟数 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’)) * 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;
—————————————-
注:天数可以2个日期直接减,这样更加方便
—————————————-
–获取两时间月份差
select (EXTRACT(year FROM to_date(‘2009-05-01′,’yyyy-mm-dd’)) – EXTRACT(year FROM to_date(‘2008-04-30′,’yyyy-mm-dd’))) * 12 +
EXTRACT(month FROM to_date(‘2008-05-01′,’yyyy-mm-dd’)) – EXTRACT(month FROM to_date(‘2008-04-30′,’yyyy-mm-dd’)) months
from dual;
————————————–
注:可以使用months_between函数,更加方便
————————————–
–获取两时间年份差
select EXTRACT(year FROM to_date(‘2009-05-01′,’yyyy-mm-dd’)) – EXTRACT(year FROM to_date(‘2008-04-30′,’yyyy-mm-dd’)) years from dual;
select sysdate-3 from dual;
select round(sysdate) as 格式成日期 from dual;
select to_date(‘2008-9-2′,’yyyy_mm_dd’) as 格式成日期 from dual;
SELECt TO_CHAr(ADD_MonTHS(SYSDATE, -1), ‘yyyymm’) FROM DUAL;
Select last_day(sysdate) from dual;
Select to_char(sysdate,’YYYY’) from dual;
select to_char(sysdate,’mm’) from dual;
select to_char(sysdate,’dd’) from dual;



