日期:2014-05-17  浏览次数:21292 次

设置oracle默认日期格式
如果执行:
  alter system set nls_date_format='yyyy-mm-dd hh24:mi:ss'
报错:
ORA-02096: 此选项的指定初始化参数不可修改

如果执行
  alter system set nls_date_format='yyyy-mm-dd hh24:mi:ss' scope=spfile
正确执行 但是时间格式根本没有改变 为什么?

scope这里牵扯到了spfile和pfile 之前没接触过 谁能通俗一点的讲讲spfile和pfile ?

------解决方案--------------------
数据库重启之后才会改变…
------解决方案--------------------
nls_date_format 是在会话级别进行修改的,也就是只是针对当前会话而言。
例如:alter session set nls_date_format='yyyy-mm-dd';
你再进行查询就是yyyy-mm-dd的格式显示了。
------解决方案--------------------
探讨
引用:

数据库重启之后才会改变…


能说说spfile和pfile吗?通俗些

------解决方案--------------------
如果执行:
alter system set nls_date_format='yyyy-mm-dd hh24:mi:ss'
报错:
ORA-02096: 此选项的指定初始化参数不可修改

如果执行
alter system set nls_date_format='yyyy-mm-dd hh24:mi:ss' scope=spfile
正确执行 但是时间格式根本没有改变 为什么?

scope这里牵扯到了spfile和pfile 之前没接触过 谁能通俗一点的讲讲spfile和pfile ?
SQL code

-- 只能修改当前会话的 nls_date_format 参数值,
alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';

-- 要在系统级别修改的话,需要在注册表中添加字符串值,操作类似如下:

在注册表中:
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDb10g_home1

添加一个字符串的值
名称:NLS_DATE_FORMAT
值 :YYYY-MM-DD HH24:MI:SS (你要的日期格式)


修改后,无论用什么程序启动访问ORACLE,都会用这个设定显示格式,

------解决方案--------------------
探讨

如果执行:
alter system set nls_date_format='yyyy-mm-dd hh24:mi:ss'
报错:
ORA-02096: 此选项的指定初始化参数不可修改

如果执行
alter system set nls_date_format='yyyy-mm-dd hh24:mi:ss' scope=spfile
正确执行 但是时间格式根本没有改变 ……

------解决方案--------------------
一般来说 scope 的选项有 spfile memory both 默认为both
没有 pfile
oracle 的启动方式 分为 pfile 以及spfile 。pfile就是参数文件(明文),spfile是二进制格式
oracle 9i以后推出的spfile方式启动。这样是为了便于管理参数。

数据库在默认的情况下, 如果有spfile,以spfile方式启动,如果没有spfile文件,那么以pfile方式启动

------解决方案--------------------
学习,
------解决方案--------------------
设置什么格式都一样吧,你拿出来格式化下就行
------解决方案--------------------
楼主用的是alter system 
如果只要改变会话级的用alter session 就可以了。
另外scope 配置过struts1的话就知道
scope 是作用范围的意思。
分为 spfile 、memory 和both
spfile 是数据库启动时所要读取的参数。

------解决方案--------------------
我印像是要改格式需要进注册表,你可以查下,不过建议你还是用to_date和to_char来使用,你不能每装一台服务器都要改吧,万一忘一个就有乐子了