修改資料庫的NLS_DATE_FORMAT引數

hky87發表於2009-11-26

今天在建立圖時遇到關於NLS_DATE_FORMAT的錯誤,貌似客戶的資料庫的NLS_DATE_FORMAT值是’YYYYMMDD’,而我們資料庫的NSL_DATE_FORMAT值是’DD-MON-RR’,導致在建立檢視後檢視不能篩出資料,檢視的script類似於這樣的寫法:

select * from t where fire_date>=’20091126’;

由於前面的fire_dateDATE型,如果>=後面的值沒有采用to_date進行格式化而直接用字串的形式的話,字串的格式必須和資料庫的NLS_DATE_FORMAT一致,如NLS_DATE_FORMAT的值是DD-MON-RR的話,>=後面的值就應該是’26-11-09’;

於是想到修改NLS_DATE_FORMAT的值,

1.       只修改sessionDATE格式

SQL> alter session set nls_date_format='YYYY-MM-DD';

 

SQL> select sysdate from dual;

 

SYSDATE

----------

2009-11-26

2.       修改資料庫的DATE預設格式

alter system set nls_date_format=’YYYYMMDD’ scope=spfile;

修改失敗……..

在網上查閱了下,以以下方法成功修改:

執行regedit開啟登錄檔,在登錄檔的HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME下新增字串值NLS_DATE_FORMAT,值設定為你想修改的格式,如’YYYY-MM-DD HH24:MI:SS’,修改成功,無需重啟任何服務。

SQL> select sysdate from dual;

 

SYSDATE

-------------------

2009-11-26 16:16:44

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10314474/viewspace-620661/,如需轉載,請註明出處,否則將追究法律責任。

相關文章