欢迎投稿

今日深度:

Oracle NLS_DATE_FORMAT,nls_date_format

Oracle NLS_DATE_FORMAT,nls_date_format


nls_date_format用于修改日期格式

  

  • session级别的修改:alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss'
  • windows平台下修改注册表: HKEY_LOCAL_MACHINE.SOFTWARE.ORACLE.HOME0 新建字符串值NLS_DATE_FORMAT ,并设置其值为:YYYY-MM-DD:HH24:MI:SS
  • UNIX/LINUX平台下:export NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'

    注意,有时候还需要设置NLS_LANG:export NLS_LANG=AMERICAN,可能跟Shell/平台有关

      

需要注意的安全问题:nls_date_format不限制字符格式,甚至可以设置为sql语句,这对于不使用绑定变量方式(preparestatement)的SQL查询,是非常危险的(你可能不会意识到还有这种用法,尤其在存储过程中,你认为类型为date就不会有问题)。

  

所以,为了安全,不论何时都要考虑优先使用绑定变量的方式(除了安全因素,性能也将大大提升)!

  

  


oracle nls_date_format问题


oracle中alter session set nls_date_format的问题?

session 是 会话, 也就是 本次连接到数据库的时候, 相关的基本信息。

alter session set nls_date_format = ‘yyyy-dd--mm’

就是修改本会话的 日期显示格式。

这个修改, 仅仅修改本次登录的 情况。
不修改别的会话的。

如果你登出了, 这些信息就丢失了。
当你重新登录以后, 又是一个新的 Session 了。

下面是一个测试的例子:

D:\>sqlplus test/test@testdb
SQL*Plus: Release 9.2.0.1.0 - Production on 星期一 4月 1 09:46:43 2013
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
连接到:
Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production

-- 首次查询日期
SQL> select sysdate from dual;
SYSDATE
----------
01-4月 -13

-- 修改会话的 日期显示格式
SQL> alter session set nls_date_format = 'yyyy-dd-mm'
2 ;
会话已更改。

-- 查询日期

SQL> select sysdate from dual;
SYSDATE
----------
2013-01-04

-- 重新连接一次.
SQL> conn test/test@testdb
已连接。

-- 再次查询日期, Session 设置被重置。
SQL> select sysdate from dual;
SYSDATE
----------
01-4月 -13
SQL>
 

www.htsjk.Com true http://www.htsjk.com/shujukunews/3410.html NewsArticle Oracle NLS_DATE_FORMAT,nls_date_format nls_date_format用于修改日期式 session级别的修改:alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss' windows平台下修改注册表: HKEY_LOCAL_MACHINE.SOFTWARE.ORACLE.HOME0 新建字...
相关文章
    暂无相关文章
评论暂时关闭