数据库中的时间问题解惑

 

时间数据date格式无论用什么格式存入数据库都是一样的。

显示和插入时的格式可以自定义。

 

修改本会话 date格式数据的显示:

SQL> alter session set nls_date_format = 'yyyy-mm-dd,hh24-mi-ss';

 

 

SQL> select * from emp4;

 

HIREDATE

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

2012-08-01 092803

2012-08-01 010101

 

插入date格式的数据:

SQL> insert into emp4 (hiredate) values (to_date('1-1-1','HH-mi-ss'));

 

 

session断开后再连接数据库后 date的格式又会被还原需要重新alter session,

如果想修改默认时间格式 

方法如下

 

http://space.itpub.net/658698/viewspace-265000



Oracle的日期格式默认设置是DD-MON-YY,很多时候我们需要修改这种格式以满足我们的需求。

     可以通过设置NLS_DATE_FORMAT来改变日期格式,为了让这种改变永久生效,介绍下面的几种方法:

     1、修改glogin.sql文件,这个文件的路径:

     Windows下,%ORACLE_HOME%\sqlplus\admin

     UNIX下,$ORACLE_HOME/sqlplus/admin

     在文件中加上:alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';

     2、修改注册表(Windows平台下)

     开始 =》运行=》regedit=》HKEY_LOCAL_MACHINE=》SOFTWARE=》ORACLE=》HOME0 =》新建 字符串值NLS_DATE_FORMAT ,并设置其值为:YYYY-MM-DD:HH24:MI:SS

     3、修改用户环境变量配置文件(UNIX平台下),加上

     export NLS_LANG=AMERICAN

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

     有时候只设置了NLS_DATE_FORMAT,而不设置NLS_LANG可能日期格式不会改变(参考RollingPig的文章),这个可能跟平台及Shell类型有关系。


    rman会话中设置nls_date_format和nls_lang


run {


......


sql 'alter session set NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"';


sql 'alter session set NLS_LANGUAGE="AMERICAN"';


......


}