首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle NLS_DATE_FORMAT 多層次生效優先級實測

     編輯:Oracle 資料庫基礎

四個層級(優先級由低到高)

  1. 數據庫級:NLS_DATABASE_PARAMETERS,默認 DD-MON-YY。
  2. 實例級:NLS_INSTANCE_PARAMETERS (init.ora/spfile),默認同數據庫級。
  3. 會話級:NLS_SESSION_PARAMETERS,可由 ALTER SESSION SET NLS_DATE_FORMAT 修改。
  4. 客戶端環境變量/註冊表:Windows 註冊表 HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\NLS_DATE_FORMAT 或 Linux NLS_LANG 環境變量。

實測矩陣

操作DB 級Instance 級Session 級SQL*Plus 顯示
初始狀態DD-MON-YYDD-MON-YYDD-MON-YYDD-MON-YY
ALTER SESSION SET NLS_DATE_FORMAT='YYYY-MM-DD'DD-MON-YYDD-MON-YYYYYY-MM-DDYYYY-MM-DD
重啟 DB 後DD-MON-YYDD-MON-YYDD-MON-YYDD-MON-YY
init.ora 加 NLS_DATE_FORMAT=YYYY-MM-DD 並重啟DD-MON-YYYYYY-MM-DDDD-MON-YYDD-MON-YY
Win 註冊表設 YYYY/MM/DD HH24:MI:SSDD-MON-YYYYYY-MM-DDYYYY/MM/DD HH24:MI:SSYYYY/MM/DD HH24:MI:SS

結論與最佳實踐

應用程序中永遠使用 TO_CHAR(date_col, 'YYYY-MM-DD HH24:MI:SS') 顯式格式化,切勿依賴隱式 NLS 格式,否則跨環境部署極易出錯。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved