数据库中的时间问题解惑
时间数据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"';
......
}
转载于:https://blog.51cto.com/itbull/955760