Oracle的NLS_DATE_FORMAT設定(日期格式設定)

lhrbest發表於2017-12-22

Oracle的NLS_DATE_FORMAT設定(日期格式設定)




 

真題1、 Oracle 中,如何讓日期顯示為“年 - - 日 時 : : 秒”的格式?


答案:
Oracle 的日期預設顯示為以下格式:

SYS@PROD1> select sysdate from dual;

 

SYSDATE

---------

22-DEC-17

閱讀不方便,此時可以透過設定 NLS_DATE_FORMAT 來讓日期顯示更人性化,可以有如下幾種方式:

①  在會話級別執行命令:“ ALTER SESSION SET NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'; ”,只在會話級別起作用。

②  在檔案 $ORACLE_HOME/sqlplus/admin/glogin.sql 中加入:“ ALTER SESSION SET NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'; ”,這樣每個會話都會起作用。

③  修改初始化引數:“ ALTER SESSION SET NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'; ”,每個會話都起作用。

④  設定環境變數 NLS_DATE_FORMAT ,但是必須和 NLS_LANG 一起設定,否則不會生效,可以直接在會話視窗使用 export .bash_profile 配置檔案(全域性應用)設定,如下所示:

export NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'

export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK   # 或: export NLS_LANG=AMERICAN

若是 Windows 環境,則可以使用如下命令:

SETX "NLS_DATE_FORMAT"  "YYYY-MM-DD HH24:MI:SS"

SETX "NLS_LANG"  "AMERICAN_AMERICA.ZHS16GBK"

使用以上任意一種方法設定,效果如下:

SYS@PROD1>  ALTER SESSION SET NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS';

 

Session altered.

 

SYS@PROD1> select sysdate from dual;

 

SYSDATE

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

2017-12-22 06:51:18

 







 

1:在會話級別設定nls_date_format對應的日期格式。

 

使用alter session set nls_date_format='xxxx'設定只會影響當前會話的。這個對所有工具(SQL*Plus、SQL Developer)都能生效。

 

 

SQL> select sysdate from dual;
 

SYSDATE
---------
14-SEP-17
 

SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
 

Session altered.
 

SQL> select sysdate from dual;
 

SYSDATE
-------------------
2017-09-14 08:33:17
 

SQL>

 

 

2:如果只是SQL*Plus,可以在SQL*Plus的環境變數設定檔案login.sql或glogin.sql中來設定。

 

SQL*Plus啟動的時候首先會先執行glogin.sql指令碼,然後查詢當前目錄下是否存在login.sql檔案,如果找到則執行該指令碼,如果當前目錄不存在login.sql.則查詢是否設定了SQLPATH環境變數,找到了就會去執行該環境變數路徑下的login.sql指令碼,否則則會停止繼續查詢。 glogin.sql檔案位於$ORACLE_HOME/sqlplus/admin下.可以在glogin.sql檔案下增加一條語句alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';

 

 

clip_image001

 

 

3: 修改資料庫的引數,需要重啟資料庫後生效   

 

 

 

SQL> show parameter nls_date_format;
 

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
nls_date_format                      string
SQL> alter system set nls_date_format='yyyy-mm-dd hh24:mi:ss' scope=spfile;
 

System altered.
 

SQL>

 

這個是全域性的,有時候影響非常大,所以必須格外小心,要確保不影響各個系統和應用的前提下修改!

 

 

 

 

4 :修改 Linux 環境變數,在環境變數中設定日期格式。

 

 

注意:環境變數NLS_DATE_FORMAT必須和NLS_LANG一起設定,否則不會生效(這個才是總結這篇文章的初衷,以前一直沒有注意這個問題)。可以直接在會話視窗使用export或 .bash_profile 配置檔案(全域性應用)設定。

 

下面我們來測試一下看看,如下所示:

 

[oracle@DB-Server ~]$ sqlplus / as sysdba
 

SQL*Plus: Release 11.2.0.1.0 Production on Wed Sep 13 09:40:48 2017
 

Copyright (c) 1982, 2009, Oracle.  All rights reserved.
 

 

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
 

SQL> select sysdate from dual;
 

SYSDATE
---------
13-SEP-17
 

SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
[oracle@DB-Server ~]$ export NLS_DATE_FORMAT='yyyy-mm-dd hh24:mi:ss';
[oracle@DB-Server ~]$ sqlplus / as sysdba
 

SQL*Plus: Release 11.2.0.1.0 Production on Wed Sep 13 09:41:22 2017
 

Copyright (c) 1982, 2009, Oracle.  All rights reserved.
 

 

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
 

SQL> select sysdate from dual;
 

SYSDATE
---------
13-SEP-17
 

SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
[oracle@DB-Server ~]$ export NLS_LANG=AMERICAN
[oracle@DB-Server ~]$ sqlplus / as sysdba
 

SQL*Plus: Release 11.2.0.1.0 Production on Wed Sep 13 09:41:50 2017
 

Copyright (c) 1982, 2009, Oracle.  All rights reserved.
 

 

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
 

SQL> select sysdate from dual;
 

SYSDATE
-------------------
2017-09-13 09:41:58
 

SQL>



今天想做個rman基於時間點的恢復實驗,需要設定下nls_data_format引數,在linux下用export nls_date_format='yyyy-mm-dd hh24:mi:ss'命令就可以設定,但是在windows環境下如果帶單引號設定,登入rman會報錯,後經google發現在windows環境下設定這個變數不需要加引號,直接set nls_date_format=yyyy-mm-dd hh24:mi:ss即可。

run {
sql 'alter session set nls_date_format="yyyy-mm-dd hh24:mi:ss"';
sql 'alter session set NLS_LANGUAGE="AMERICAN"';
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
allocate channel c4 type disk;
allocate channel c5 type disk;
allocate channel c6 type disk;
allocate channel c7 type disk;
allocate channel c8 type disk;
allocate channel c9 type disk;
allocate channel c10 type disk;
allocate channel c11 type disk;
allocate channel c12 type disk;
backup as compressed backupset FILESPERSET 1 database format 'd:\dbback\FULL_%d_%U.full' section size 100G;
sql 'alter system archive log current';
backup as compressed backupset archivelog all  format 'd:\dbback\ARC_%d_%U.arc' section size 100G;
backup current controlfile format 'd:\dbback\cf_%d_%U.ctl';
release channel c1;
release channel c2;
release channel c3;
release channel c4;
release channel c5;
release channel c6;
release channel c7;
release channel c8;
release channel c9;
release channel c10;
release channel c11;
release channel c12;
}




About Me

.............................................................................................................................................

● 本文作者:小麥苗,部分內容整理自網路,若有侵權請聯絡小麥苗刪除

● 本文在itpub( http://blog.itpub.net/26736162/abstract/1/ )、部落格園( http://www.cnblogs.com/lhrbest )和個人微信公眾號( xiaomaimiaolhr )上有同步更新

● 本文itpub地址: http://blog.itpub.net/26736162/abstract/1/

● 本文部落格園地址: http://www.cnblogs.com/lhrbest

● 本文pdf版、個人簡介及小麥苗雲盤地址: http://blog.itpub.net/26736162/viewspace-1624453/

● 資料庫筆試面試題庫及解答: http://blog.itpub.net/26736162/viewspace-2134706/

● DBA寶典今日頭條號地址:

.............................................................................................................................................

● QQ群號: 230161599 (滿) 、618766405

● 微信群:可加我 微信,我拉大家進群,非誠勿擾

● 聯絡我請加QQ好友 646634621 ,註明新增緣由

● 於 2017-12-01 09:00 ~ 2017-12-31 22:00 在魔都完成

● 文章內容來源於小麥苗的學習筆記,部分整理自網路,若有侵權或不當之處還請諒解

● 版權所有,歡迎分享本文,轉載請保留出處

.............................................................................................................................................

小麥苗的微店

小麥苗出版的資料庫類叢書 http://blog.itpub.net/26736162/viewspace-2142121/

.............................................................................................................................................

使用 微信客戶端 掃描下面的二維碼來關注小麥苗的微信公眾號( xiaomaimiaolhr )及QQ群(DBA寶典), 學習最實用的資料庫技術。

   小麥苗的微信公眾號      小麥苗的DBA寶典QQ群2     《DBA筆試面寶典》讀者群       小麥苗的微店

.............................................................................................................................................

Oracle的NLS_DATE_FORMAT設定(日期格式設定)
DBA筆試面試講解群
《DBA寶典》讀者群 歡迎與我聯絡



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26736162/viewspace-2149081/,如需轉載,請註明出處,否則將追究法律責任。

相關文章