环境:
OS: Red Hat Enterprise Linux AS release 4 (Nahant Update 2)
DB: 10.2.0.1.0
关于nls_date_format的说明:
NLS_DATE_FORMAT specifies the default date format to use with the TO_CHAR and TO_DATE functions. The default value of this parameter is determined by NLS_
TERRITORY.
昨天为了测试把两台测试库的nls_date_format参数修改了
SQL> alter system set nls_date_format='yyyy-mm-dd hh24:mi:ss' scope=spfile;
这个参数不可动态修改.
修改完后,由于其它的事,就没进行后续的测试了.(这个参数的对我的实验来并不非修改不可)
今天在确认是发现了下面的问题
SQL> select sysdate from dual;
上面的语句在两台测试机的结果不相同,分别是:
SYSDATE
------------
05-DEC-09
SYSDATE
-------------------
2009-12-05 09:12:06
记得重起过数据了
在会话级别上修改nls_date_format参数又有效
SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
Session altered.
SQL> select sysdate from dual;
SYSDATE
-------------------
2009-12-05 09:15:07
怀疑忘记重起了,重起了再试还是不行
SQL>show parameter nls_date在两台测试库上结果机同
SQL> col PARAMETER for a35
SQL> col value for a30
SQL> select * from nls_session_parameters;
发现两台数据的nls_date_format不同
NLS_DATE_FORMAT yyyy-mm-dd hh24:mi:ss
NLS_DATE_FORMAT DD-MON-RR
通过putty连接到测试机的,导致上面的SQL结果不同的地方 :环境变量的设置
在.bash_profile中发现一台测试中有下面的内容
export NLS_LANG=american_america.zhs16gb
注释掉后一切OK,说明环境变量NLS_LANG的值决定会话级nls_date_format的值.
后来也从网络上发现了下面的内容:
系统级alter system的优先级低于会话级alter session的优先级
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/7419833/viewspace-621707/ ,如需转载,请注明出处,否则将追究法律责任。