【DB筆試面試451】Oracle經常使用日期處理函數有哪些?這些函數能夠實現哪些功能?

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

♣          題目         部分


Oracle經常使用日期處理函數有哪些?這些函數能夠實現哪些功能?數據庫



     
♣          答案部分          



有關日期函數須要瞭解如下幾點:ide

(1)日期函數用於處理DATE類型的數據。函數

(2)在日期上加上或減去一個數字結果仍爲日期。spa

(3)兩個日期相減返回日期之間相差的天數。3d

(4)默認狀況下,日期格式爲DD-MON-RR。blog

(5)查詢當前數據庫日期格式的命令:SELECT SYS_CONTEXT('USERENV','NLS_DATE_FORMAT') FROM DUAL;。it

(6)SYSDATE:該函數返回系統時間。class

(7)LAST_DAY(D):返回指定日期所在月份的最後一天。im

(8)MONTHS_BETWEEN:表示兩個日期的月份之差,即在給定的兩個日期之間有多少個月。數據

(9)ADD_MONTHS(D,N):該函數將給定的日期增長N個月。當N爲正數時,該函數將給定的日期增長N個月,爲負數時減去N個月,該函數很經常使用,能夠用來表示上個月、下個月,去年和下一年等等。

(10)NEXT_DAY(D,N):返回以時間點D爲基準(開始),下一個「目標日N」的日期。

因爲數據庫以數字方式存儲日期,所以,日期類型能夠進行算術運算(加法或減法)。例如:能夠給日期增長或減去一個數字,獲得的結果仍是一個日期值,兩個日期相減,獲得兩個日期之間的天數,用小時除以24就能夠獲得天數。

SELECT TO_CHAR(SYSDATE, 'MM') FROM DUAL;--求月份

 

SELECT TO_CHAR(ADD_MONTHS(TRUNC(SYSDATE), -1), 'YYYY-MM') FROM DUAL;--上一個月

 

SELECT TO_CHAR(ADD_MONTHS(TRUNC(SYSDATE), 1), 'YYYY-MM') FROM DUAL;--下一個月

 

SELECT SYSDATE,ADD_MONTHS(SYSDATE, -12) FROM   DUAL;--去年

 

SELECT EMPNO,HIREDATE,MONTHS_BETWEEN(SYSDATE,HIREDATE)/12 YEARS FROM SCOTT.EMP;

 

另外,日期中經常使用到的一個修改日期語言的SQL:

修改成英文:ALTER SESSION SET NLS_LANGUAGE='AMERICAN';

修改成中文:ALTER SESSION SET NLS_LANGUAGE='SIMPLIFIED CHINESE';

在英語的環境中,查詢星期時要用英文,示例代碼以下所示:

SYS@lhrdb21> SELECT NEXT_DAY(SYSDATE,'星期二') FROM DUAL;

SELECT NEXT_DAY(SYSDATE,'星期二') FROM DUAL

                        *

ERROR at line 1:

ORA-01846: not a valid day of the week

SYS@lhrdb21> ALTER SESSION SET NLS_LANGUAGE='SIMPLIFIED CHINESE';

會話已更改。

SYS@lhrdb21> SELECT NEXT_DAY(SYSDATE,'星期二') FROM DUAL;

NEXT_DAY(SYSDATE,'

-------------------

2016-09-13 09:32:58

判斷當天是否月份最後一天的代碼以下所示:

SYS@lhrdb21> WITH T AS

  2  (SELECT   SYSDATE DAT FROM DUAL)

  3  SELECT DECODE(DAT, LAST_DAY(DAT), 'YES', 'NO') FROM T;

DEC

---

NO

SYS@lhrdb21> SELECT SYSDATE FROM DUAL;

SYSDATE

-------------------

2016-09-09 09:33:56

相關文章
相關標籤/搜索