session 修改日期格式不生效

时间:2022-05-02 18:09:15
我的机器是WIN8系统, 用PLSQL连接到服务器做如下操作, 发现修改 session 的日期格式后不生效:


SQL> select sysdate from dual;
 
SYSDATE
-----------
2013/3/5 10
 
SQL> alter session set nls_date_format = 'yyyy-mm-dd hh24:mi:ss';
 
Session altered
 
SQL> select sysdate from dual;
 
SYSDATE
-----------
2013/3/5 10
 
SQL>


服务器是 LINUX, 数据库是 ORACLE 10g. 我已经在注册表里加了 nls_date_format, 值是 yyyy-mm-dd hh24:mi:ss, 可问题还是依旧;
但是用 SecureCRT 连到服务器上做上面同样操作是 OK 的.

这里有个帖子, 貌似也没解决, 求助啊~
http://www.itpub.net/thread-930153-1-1.html

9 个解决方案

#1


注册表修改的格式确认下是否正确

#3


在win8上修改注册表 nls_date_format,生效的是win8上的吧
而你PL/SQL客户端要调用的是Linux上的服务器吧
SecureCRT 可以、应该是PL/SQL的问题

#4


引用 1 楼 java3344520 的回复:
注册表修改的格式确认下是否正确


格式应该没问题,无空格等特殊字符。。。

session 修改日期格式不生效

#5


引用 2 楼 java3344520 的回复:
session的设置参考
http://www.orafaq.com/usenet/comp.databases.oracle.server/2005/10/27/1583.htm



把 session 的 nls_date_format 修改成 'yyyy-mm-dd hh24:mi:ss' 后,
select * from v$nls_parameters where parameter = 'NLS_DATE_FORMAT';
查出来的值就是 yyyy-mm-dd hh24:mi:ss

但是按你给的链接里的方法查:
select name,value from v$parameter where name='nls_date_format';
有 nls_date_format 但是值是空的

这又能说明啥问题呢

#6


引用 3 楼 linwaterbin 的回复:
在win8上修改注册表 nls_date_format,生效的是win8上的吧
而你PL/SQL客户端要调用的是Linux上的服务器吧
SecureCRT 可以、应该是PL/SQL的问题



换了台XP,连接同一个服务器,做上面同样操作,还是有同样问题!
CLIENT端查询出来的日期格式应该是跟CLIENT端的设置有关吧,字符集还是环境变量或者什么。。。晕啊

#7


你使用PLSQL工具连接数据库吧,PLSQL工具显示的日期格式,是工具里面自己的格式。
例如:使用PLSQL Developer工具,可以在Tools-Preferences-User Interface-Date/Time 里面修改。

#8


session 修改日期格式不生效
PL/SQL里有设置的,按照LS的设置一下吧
Tools-Preferences-User Interface-NLS Options

#9


引用 7 楼 luguohai123 的回复:
你使用PLSQL工具连接数据库吧...


引用 8 楼 edcvf3 的回复:
PL/SQL里有设置的,按照LS的设置一下吧
Tools-Preferences-User Interface-NLS Options


两位正解, 多谢啦 session 修改日期格式不生效

还有个疑问: 1) 为啥在PLSQL 里设置完后, sql window 里 sysdate 可以按设置的格式显示, 而 command window 里只显示 年/月/日, 为啥不显示 时/分/秒 呢?  2) 在 PLSQL 里不能通过 alter session set nls_date_format = 'XXX'; 来修改日期格式吗?

#1


注册表修改的格式确认下是否正确

#2


#3


在win8上修改注册表 nls_date_format,生效的是win8上的吧
而你PL/SQL客户端要调用的是Linux上的服务器吧
SecureCRT 可以、应该是PL/SQL的问题

#4


引用 1 楼 java3344520 的回复:
注册表修改的格式确认下是否正确


格式应该没问题,无空格等特殊字符。。。

session 修改日期格式不生效

#5


引用 2 楼 java3344520 的回复:
session的设置参考
http://www.orafaq.com/usenet/comp.databases.oracle.server/2005/10/27/1583.htm



把 session 的 nls_date_format 修改成 'yyyy-mm-dd hh24:mi:ss' 后,
select * from v$nls_parameters where parameter = 'NLS_DATE_FORMAT';
查出来的值就是 yyyy-mm-dd hh24:mi:ss

但是按你给的链接里的方法查:
select name,value from v$parameter where name='nls_date_format';
有 nls_date_format 但是值是空的

这又能说明啥问题呢

#6


引用 3 楼 linwaterbin 的回复:
在win8上修改注册表 nls_date_format,生效的是win8上的吧
而你PL/SQL客户端要调用的是Linux上的服务器吧
SecureCRT 可以、应该是PL/SQL的问题



换了台XP,连接同一个服务器,做上面同样操作,还是有同样问题!
CLIENT端查询出来的日期格式应该是跟CLIENT端的设置有关吧,字符集还是环境变量或者什么。。。晕啊

#7


你使用PLSQL工具连接数据库吧,PLSQL工具显示的日期格式,是工具里面自己的格式。
例如:使用PLSQL Developer工具,可以在Tools-Preferences-User Interface-Date/Time 里面修改。

#8


session 修改日期格式不生效
PL/SQL里有设置的,按照LS的设置一下吧
Tools-Preferences-User Interface-NLS Options

#9


引用 7 楼 luguohai123 的回复:
你使用PLSQL工具连接数据库吧...


引用 8 楼 edcvf3 的回复:
PL/SQL里有设置的,按照LS的设置一下吧
Tools-Preferences-User Interface-NLS Options


两位正解, 多谢啦 session 修改日期格式不生效

还有个疑问: 1) 为啥在PLSQL 里设置完后, sql window 里 sysdate 可以按设置的格式显示, 而 command window 里只显示 年/月/日, 为啥不显示 时/分/秒 呢?  2) 在 PLSQL 里不能通过 alter session set nls_date_format = 'XXX'; 来修改日期格式吗?