客服端 NLS_LANG 环境变量对 NLS_DATE_FORMAT 参数设置的影响

客服端 NLS_LANG 环境变量对 NLS_DATE_FORMAT 参数设置的影响

一. NLS_LANG  , 这个参数作为环境变量配置于 .bash_profile ( LINUX) 中(在windows 中,配置于注册表中)。 其作用主要用于设置oracle客服端工具的语言环境,如sql*plus这样的工具。其格式主要用三部分组成: 语言, 区域, 字符集 。 语法格式为: NLS_LANG=language_territory.charset  , 其中language 表示语言部分, territory表示区域, charset 表示字符集。 eg: 'SIMPLIFIED CHINESE'_SINGAPORE.ZHS16GBK 。

 

二. NLS_DATE_FORMAT , 这个参数是实例级的, 设置spfile或者pfile 文件中。 其设置主要用于控制 date 类型数据的格式化输出。 同时其作用域 session级,instance级, 也说明这个参数可以在session 中改变,各个session可以有不设置不同 date格式。 如果没在session中设置这个参数,date的输出格式,就会遵从 参数文件中的设置 。

 

三. NLS_LANG 和 NLS_DATE_FORMAT 的关系。

在windows中, 通过修改参数文件中 NLS_DATE_FORMAT  往往不能达到修改 date 的输出格式。 但是如果你修改 注册表中NLS_LANG参数而又能达到修改date 的输出格式。这就给人一个感觉就是 nls_lang参数的设置要优先于参数文件中设置NLS_DATE_FORMAT 参数  。 但是 如果你在session中设置了 nls_date_format的话,date的格式 又会遵从于session中的设置 。 这又说明 在nls_lang 参数的设置的优先级又小于 session中 nls_date_format的设置。

 

四. 实验(linux  + oracle 10.1.0.3 )

  1.测试环境: 

SQL> select * from v$version ;

BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.1.0.3.0 - Prod
PL/SQL Release 10.1.0.3.0 - Production
CORE    10.1.0.3.0      Production
TNS for Linux: Version 10.1.0.3.0 - Production
NLSRTL Version 10.1.0.3.0 - Production
 

   2.测试代码

     [oracle@localhost oracle]$ export NLS_LANG=english_america.UTF8
[oracle@localhost oracle]$ sqlplus "/as sysdba"

SQL*Plus: Release 10.1.0.3.0 - Production on Thu Jun 2 06:13:56 2011

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


Connected to:
Oracle Database 10g Enterprise Edition Release 10.1.0.3.0 - Production
With the Partitioning, OLAP and Data Mining options

SQL> show parameter nls_date_format

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
nls_date_format                      string      yyyy-dd-mm
SQL> select sysdate from dual ;

SYSDATE
---------------
02-JUN-11

SQL> alter session set nls_date_format='yyyy-mm' ;

Session altered.

SQL>
SQL> select sysdate from dual ;

SYSDATE
-------
2011-06
SQL> conn /as sysdba

Connected.
SQL> select sysdate from dual ;

SYSDATE
---------------
02-JUN-11

      

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25380220/viewspace-697275/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/25380220/viewspace-697275/

你可能感兴趣的:(客服端 NLS_LANG 环境变量对 NLS_DATE_FORMAT 参数设置的影响)