[20170918]NLS_DATE_FORMAT設定.txt

lfree發表於2017-09-19

[20170918]NLS_DATE_FORMAT設定.txt

--//昨天看了連結www.cnblogs.com/kerrycode/p/7518890.html,裡面提到
注意:環境變數NLS_DATE_FORMAT必須和NLS_LANG一起設定,否則不會生效(這個才是總結這篇文章的初衷,以前一直沒有注意這個問題
)。可以直接在會話視窗使用export或.bash_profile配置檔案(全域性應用)設定。

--//我自己也測試看看.

SCOTT@book> @ &r/ver1

PORT_STRING                    VERSION        BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx            11.2.0.4.0     Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

$ env | grep -i nls
NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
NLS_TIMESTAMP_TZ_FORMAT=YYYY-MM-DD HH24:MI:SS.FF TZH:TZM
NLS_TIMESTAMP_FORMAT=YYYY-MM-DD HH24:MI:SS.FF
NLS_DATE_FORMAT=YYYY-MM-DD HH24:MI:SS

--//取消設定NLS_DATE_FORMAT,NLS_LANG後重新登入.

$ export NLS_LANG=
$ export NLS_DATE_FORMAT=
$ env | grep -i nls
NLS_LANG=
NLS_TIMESTAMP_TZ_FORMAT=YYYY-MM-DD HH24:MI:SS.FF TZH:TZM
NLS_TIMESTAMP_FORMAT=YYYY-MM-DD HH24:MI:SS.FF
NLS_DATE_FORMAT=

SCOTT@book> show parameter nls_
NAME                    TYPE    VALUE
----------------------- ------- -------
nls_calendar            string
nls_comp                string  BINARY
nls_currency            string
nls_date_format         string
nls_date_language       string
nls_dual_currency       string
nls_iso_currency        string
nls_language            string  AMERICAN
nls_length_semantics    string  BYTE
nls_nchar_conv_excp     string  FALSE
nls_numeric_characters  string
nls_sort                string
nls_territory           string  AMERICA
nls_time_format         string
nls_time_tz_format      string
nls_timestamp_format    string
nls_timestamp_tz_format string

SCOTT@book> select sysdate from dual ;
SYSDATE
---------
19-SEP-17

$ export NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'
$ env | grep -i nls
NLS_LANG=
NLS_TIMESTAMP_TZ_FORMAT=YYYY-MM-DD HH24:MI:SS.FF TZH:TZM
NLS_TIMESTAMP_FORMAT=YYYY-MM-DD HH24:MI:SS.FF
NLS_DATE_FORMAT=YYYY-MM-DD HH24:MI:SS

--//再次重新登入:
SCOTT@book> show parameter nls_
NAME                     TYPE   VALUE
------------------------ ------ ----------
nls_calendar             string
nls_comp                 string BINARY
nls_currency             string
nls_date_format          string
nls_date_language        string
nls_dual_currency        string
nls_iso_currency         string
nls_language             string AMERICAN
nls_length_semantics     string BYTE
nls_nchar_conv_excp      string FALSE
nls_numeric_characters   string
nls_sort                 string
nls_territory            string AMERICA
nls_time_format          string
nls_time_tz_format       string
nls_timestamp_format     string
nls_timestamp_tz_format  string

SCOTT@book> select sysdate from dual ;
SYSDATE
---------
19-SEP-17

--//透過修改會話也有效.
SCOTT@book> alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS';
Session altered.

SCOTT@book> select sysdate from dual ;
SYSDATE
-------------------
2017-09-19 09:00:30


$ export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

$ env | grep -i nls
NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
NLS_TIMESTAMP_TZ_FORMAT=YYYY-MM-DD HH24:MI:SS.FF TZH:TZM
NLS_TIMESTAMP_FORMAT=YYYY-MM-DD HH24:MI:SS.FF
NLS_DATE_FORMAT=YYYY-MM-DD HH24:MI:SS

SCOTT@book> show parameter nls_
NAME                    TYPE    VALUE
----------------------- ------- ---------------------------------
nls_calendar            string  GREGORIAN
nls_comp                string  BINARY
nls_currency            string  $
nls_date_format         string  YYYY-MM-DD HH24:MI:SS
nls_date_language       string  AMERICAN
nls_dual_currency       string  $
nls_iso_currency        string  AMERICA
nls_language            string  AMERICAN
nls_length_semantics    string  BYTE
nls_nchar_conv_excp     string  FALSE
nls_numeric_characters  string  .,
nls_sort                string  BINARY
nls_territory           string  AMERICA
nls_time_format         string  HH.MI.SSXFF AM
nls_time_tz_format      string  HH.MI.SSXFF AM TZR
nls_timestamp_format    string  YYYY-MM-DD HH24:MI:SS.FF
nls_timestamp_tz_format string  YYYY-MM-DD HH24:MI:SS.FF TZH:TZM

SCOTT@book> select sysdate from dual ;
SYSDATE
-------------------
2017-09-19 08:58:19


$ export NLS_DATE_FORMAT=
$ export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
$ env | grep -i nls
NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
NLS_TIMESTAMP_TZ_FORMAT=YYYY-MM-DD HH24:MI:SS.FF TZH:TZM
NLS_TIMESTAMP_FORMAT=YYYY-MM-DD HH24:MI:SS.FF
NLS_DATE_FORMAT=

SCOTT@book> show parameter nls_
NAME                    TYPE   VALUE
----------------------- ------ ---------------------------------
nls_calendar            string GREGORIAN
nls_comp                string BINARY
nls_currency            string $
nls_date_format         string DD-MON-RR
nls_date_language       string AMERICAN
nls_dual_currency       string $
nls_iso_currency        string AMERICA
nls_language            string AMERICAN
nls_length_semantics    string BYTE
nls_nchar_conv_excp     string FALSE
nls_numeric_characters  string .,
nls_sort                string BINARY
nls_territory           string AMERICA
nls_time_format         string HH.MI.SSXFF AM
nls_time_tz_format      string HH.MI.SSXFF AM TZR
nls_timestamp_format    string YYYY-MM-DD HH24:MI:SS.FF
nls_timestamp_tz_format string YYYY-MM-DD HH24:MI:SS.FF TZH:TZM

SCOTT@book> select sysdate from dual ;
SYSDATE
------------
19-SEP-17

--//總之定義全域性的NLS_DATE_FORMAT要以定義全域性的NLS_LANG才有效.oracle有時候真的很奇怪.

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

相關文章