我想让服务器设置为这样的格式后,以后每次启动我从JAVA程序里面插入2009-06-05 23:15:12的格式都可以。 现在插入的时候报错。 我用了ALTER SYSTEM SET NLS_TIMESTAMP_FORMAT='yyyy-mm-dd hh24:mi:ss.ff' SCOPE=SPFILE;COMMIT; 修改了服务器初始化参数文件,但是还是不能插入啊
首先 alter system .... scope=spfile; 不需要commit,scope=spfile,表明需要重启才生效。其次,你使用java程序,可能是用的thin的连接方式,这样的话,本地的环境变量和注册表里的NLS_TIMESTAMP_FORMAT是不起作用的,应该是和系统的locale有关,你可以设置系统的locale,或者是通过java来修改jvm的default locale。如果是oci的方式,应该是受本地的环境变量和注册表里的NLS_TIMESTAMP_FORMAT的影响的
In Windows, start regedit, go to HKEY_Local_Machine, Software, Oracle and add entry NLS_TIMESTAMP = 'YYYY-MM-DD HH24:MI:SS'
设置日期格式:alter session set nls_date_format='dd-mm-yy hh24:mi:ss';
LINUX系统!!
我的状况是这样的:
我修改会话:ALTER SESSION SET NLS_TIMESTAMP_FORMAT='yyyy-mm-dd hh24:mi:ss.ff';COMMIT;
此修改生效。格式变为“2009-02-05 23:12:45:123456”;
但我想修改SPFILE参数设置,ALTER SYSTEM SET NLS_TIMESTAMP_FORMAT='yyyy-mm-dd hh24:mi:ss.ff' SCOPE=SPFILE;COMMIT;
却无法实现上面的效果。这样不可以吗?并且修改完后我重新启动了数据库啊。
的区别是什么呢?
现在插入的时候报错。
我用了ALTER SYSTEM SET NLS_TIMESTAMP_FORMAT='yyyy-mm-dd hh24:mi:ss.ff' SCOPE=SPFILE;COMMIT; 修改了服务器初始化参数文件,但是还是不能插入啊
可是就是不能执行成功!!
有人可以解决吗?
大家就显显神通吧!!
怎么做才可以呢?
我已经试过多种方法,仍无济于事啊。
这并不是我希望的解决方式,因为我的数据插入是在JAVA代码中执行,不是在这里WINDOWS的客户端里执行。
服务器设置完毕后,每次启动数据库后,JAVA代码执行写入日期,格式是‘2009-02-02 21:12:12’的格式。
首先 alter system .... scope=spfile; 不需要commit,scope=spfile,表明需要重启才生效。其次,你使用java程序,可能是用的thin的连接方式,这样的话,本地的环境变量和注册表里的NLS_TIMESTAMP_FORMAT是不起作用的,应该是和系统的locale有关,你可以设置系统的locale,或者是通过java来修改jvm的default locale。如果是oci的方式,应该是受本地的环境变量和注册表里的NLS_TIMESTAMP_FORMAT的影响的
我的目的就是不受本地影响,所以我的却是用的THIN连接。
当我的JAVA程序在任何一台机器上运行时,我希望一旦它连接上数据库服务器,那么它就可以通过程序将2009-06-05 23:15:12的格式的日期写入数据库中,而不会抛出一个无效月份的异常。
INSERT INTO TEST_TABLE VALUES (to_date('2009-02-02 22:12:12','yyyy-mm-dd hh24:mi:ss'));
因为这个处理是要兼容其它的数据库的(MYSQL),不可以改变SQL语句,也就是不能用到ORACLE特有的处理函数。