Oracle NLS_DATE_FORMAT,nls_date_format

來源:互聯網
上載者:User

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>
 

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.