本文將演示如下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 |