怎么样设置能让ORACLE的TIMESTAMP类型不是显示那一大坨恶心的字符串,而是让其显示为2009-06-16 11:25:36的格式呢?
插入的时候也是用这个格式插入。
就是在SPFILE中设置一下,以后每次启动都是这样的设置了就。

解决方案 »

  1.   

    try:
    In Windows, start regedit, go to HKEY_Local_Machine, Software, Oracle and add entry NLS_TIMESTAMP = 'YYYY-MM-DD HH24:MI:SS'
      

  2.   


    设置日期格式:alter session set nls_date_format='dd-mm-yy hh24:mi:ss';
      

  3.   


    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;
       却无法实现上面的效果。这样不可以吗?并且修改完后我重新启动了数据库啊。
      

  4.   

    export NLS_TIMESTAMP = 'YYYY-MM-DD HH24:MI:SS'
      

  5.   

    这个设置与ALTER SESSION SET NLS_TIMESTAMP_FORMAT='yyyy-mm-dd hh24:mi:ss.ff' SCOPE=SPFILE;COMMIT; 
    的区别是什么呢?
      

  6.   

    你时间的字符串显示格式是基于你的客户端,而不是数据库,所以需要在客户端设置。如果你的客户端是windows,那么在注册表的Oracle目录下增加NLS_DATE_FORMAT和NLS_TIMESTAMP_TZ_FORMAT两个键,值分别为YYYY-MM-DD HH24:MI:SS和YYYY-MM-DD HH24:MI:SS.FF。注册表位置大概位于HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_XXXX
      

  7.   

    我想让服务器设置为这样的格式后,以后每次启动我从JAVA程序里面插入2009-06-05 23:15:12的格式都可以。
    现在插入的时候报错。
    我用了ALTER SYSTEM SET NLS_TIMESTAMP_FORMAT='yyyy-mm-dd hh24:mi:ss.ff' SCOPE=SPFILE;COMMIT; 修改了服务器初始化参数文件,但是还是不能插入啊
      

  8.   

    就是一个要求:用JAVA代码执行INSERT INTO TEST_TABLE VALUES ('2009-02-02 22:12:12');
    可是就是不能执行成功!!
    有人可以解决吗?
    大家就显显神通吧!!
    怎么做才可以呢?
    我已经试过多种方法,仍无济于事啊。
      

  9.   


    这并不是我希望的解决方式,因为我的数据插入是在JAVA代码中执行,不是在这里WINDOWS的客户端里执行。
    服务器设置完毕后,每次启动数据库后,JAVA代码执行写入日期,格式是‘2009-02-02 21:12:12’的格式。
      

  10.   


    首先 alter system .... scope=spfile; 不需要commit,scope=spfile,表明需要重启才生效。其次,你使用java程序,可能是用的thin的连接方式,这样的话,本地的环境变量和注册表里的NLS_TIMESTAMP_FORMAT是不起作用的,应该是和系统的locale有关,你可以设置系统的locale,或者是通过java来修改jvm的default locale。如果是oci的方式,应该是受本地的环境变量和注册表里的NLS_TIMESTAMP_FORMAT的影响的
      

  11.   


    我的目的就是不受本地影响,所以我的却是用的THIN连接。
    当我的JAVA程序在任何一台机器上运行时,我希望一旦它连接上数据库服务器,那么它就可以通过程序将2009-06-05 23:15:12的格式的日期写入数据库中,而不会抛出一个无效月份的异常。
      

  12.   


    INSERT INTO TEST_TABLE VALUES (to_date('2009-02-02 22:12:12','yyyy-mm-dd hh24:mi:ss')); 
      

  13.   

    不可以这样的方法,必须是单纯的一句INSERT INTO TEST_TABLE VALUES ('2009-02-02 22:12:12');不能做任何函数处理啊。
    因为这个处理是要兼容其它的数据库的(MYSQL),不可以改变SQL语句,也就是不能用到ORACLE特有的处理函数。
      

  14.   

    用to_char(timestamp,'yyyy-mm-dd hh24:mi:ss')转一下