我的机器是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.htmlsessionoracle

解决方案 »

  1.   

    session的设置参考
    http://www.orafaq.com/usenet/comp.databases.oracle.server/2005/10/27/1583.htm
      

  2.   

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

  3.   

    把 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 但是值是空的这又能说明啥问题呢
      

  4.   

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

  5.   

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

  6.   


    PL/SQL里有设置的,按照LS的设置一下吧
    Tools-Preferences-User Interface-NLS Options
      

  7.   

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