本文将演示如下4个 Oracle中的经常使用日期函数。函数
函数code |
功能blog |
ADD_MONTHS(d,n)ip |
在某一个日期d上,加上指定的月数n,返回计算后的新日期get |
LAST_DAY(d)table |
返回指定日期当月的最后一天im |
ROUND(d[,fmt])db |
返回一个以fmt为格式的四舍五入日期值img |
EXTRACT(fmt FROM d)tab |
返回一个以fmt为格式的四舍五入日期值 |
下面将结合实例对这些函数进行介绍。
l ADD_MONTHS(d,n),在某一个日期d上,加上指定的月数n,返回计算后的新日期。d表示日期,n表示要加的月数。
示例1:
SQL> SELECT SYSDATE,ADD_MONTHS(SYSDATE,5) FROM DUAL; SYSDATE ADD_MONTHS(SYS -------------- -------------- 06-12月-16 06-5月 -17 |
l LAST_DAY(d),返回指定日期当月的最后一天。
示例2:
SQL> SELECT SYSDATE,LAST_DAY(SYSDATE) FROM DUAL;
SYSDATE LAST_DAY(SYSDA -------------- -------------- 06-12月-16 31-12月-16 |
l ROUND(d[,fmt]),返回一个以fmt为格式的四舍五入日期值,d是日期,fmt是格式模型。默认fmt为DDD,即月中的某一天。
Ø 若是fmt为“YEAR”则舍入到某年的1月1日,即前半年舍去,后半年做为下一年。
Ø 若是fmt为“MONTH”则舍入到某月的1日,即前月舍去,后半月做为下一月。
Ø 默认为“DDD”,即月中的某一天,最靠近的天,前半天舍去,后半天做为次日。
Ø 若是fmt为“DAY”则舍入到最近的周的周日,即上半周舍去,下半周做为下一周周日。
示例3:
SQL> SELECT SYSDATE, 2 ROUND(SYSDATE), 3 ROUND(SYSDATE,'DAY'), 4 ROUND(SYSDATE,'MONTH'), 5 ROUND(SYSDATE,'YEAR') FROM DUAL;
SYSDATE ROUND(SYSDATE) ROUND(SYSDATE, ROUND(SYSDATE, ROUND(SYSDATE, -------------- -------------- -------------- -------------- -------------- 06-12月-16 06-12月-16 04-12月-16 01-12月-16 01-1月 -17 |
与ROUND对应的函数时TRUNC(d[,fmt])对日期的操做,TRUNC与ROUND很是类似,只是不对日期进行舍入,直接截取到对应格式的第一天。
l EXTRACT(fmt FROM d),提取日期中的特定部分。
fmt为:YEAR、MONTH、DAY、HOUR、MINUTE、SECOND。其中YEAR、MONTH、DAY能够为DATE类型匹配,也能够与TIMESTAMP类型匹配;可是HOUR、MINUTE、SECOND必须与TIMESTAMP类型匹配。
HOUR匹配的结果中没有加上时区,所以在中国运行的结果小8小时。
示例4:
SQL> SELECT SYSDATE "DATA", 2 EXTRACT(YEAR FROM SYSDATE) "YEAR", 3 EXTRACT(MONTH FROM SYSDATE) "MONTH", 4 EXTRACT(DAY FROM SYSDATE ) "DAY", 5 EXTRACT(HOUR FROM SYSTIMESTAMP) "HORE", 6 EXTRACT(MINUTE FROM SYSTIMESTAMP) "MINUTE", 7 EXTRACT(SECOND FROM SYSTIMESTAMP) "SECOND" 8 FROM DUAL;
DATA YEAR MONTH DAY HORE MINUTE SECOND ------------- ---------- ---------- ---------- ---------- ---------- ---------- 06-12月-16 2016 12 6 1 38 26.481 |