数据库时间格式解惑:

我insert的时候用不同的时间格式存到数据库里,是不是存的是什么格式在库里就是用什么格式存放?

答:不是的。可以用不同的格式插入数据库中,也可以用不同的格式输出显示,但数据库中的date数据是一样的。

如果修改会话时间的显示格式?

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

来定义该会话日期的显示格式  

 

SQL> select * from emp4;

 

HIREDATE

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

2012-08-01,09-28-03

2012-08-01,01-01-01

如何插入时间数据?
答:
SQL> insert into emp4 (hiredate) values (to_date('1-1-1','HH-mi-ss');
 
如何让每次session连接到数据库时间格式都是按照我定义的格式显示?
答:

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"';

......

}