1、oracle时间数据的存储格式
oracle数据库中存放时间格式的数据,是以oracle特定的格式存贮的,占7个字节,与查询时显示的时间格式无关,具体哪个字节表示什么,没必要都搞清楚。存贮的时间包括年月日时分秒,最小精度为秒,不存贮秒以下的时间单位。
2、oracle时间数据的显示格式
查询时显示的时间格式,由会话环境决定,或者由用户定义,与数据库对时间的存储格式无关。
通常,客户数据库建立起连接后,oracle就会给一个缺省的时间数据的显示形式,与所使用的字符集有关。一般显示年月日,而不显示时分秒。向表中插入数据时,如果不使用转换函数,则时间字段的格式必须遵从会话环境的时间格式,否则不能插入。查看当前会话的时间格式,可以使用以下的SQL语句:
SQL> select sysdate from dual;
另外,你可以通过任一种Oracle客户端工具,打开一张含有日期字段的表数据,查看使用该客户端时的时间格式,也可以通过修改该客户端的配置从而改变使用该客户端时的时间格式。例如:对于Oracle SQL Developer,在“工具——首选项——数据库——NLS”中配置。
3、向oracle表中插入时间格式的数据
向oracle表插入时间格式的数据是一个相对来讲比较麻烦的事情,要么你严格遵从当前会话的时间格式书写你的时间值,要么使用转换函数自定义时间数据的格式。有两个与时间相关的转换函数:to_char 和 to_date。
to_char(时间值,时间格式)函数将时间值转换为字符串形式,通常在查询中使用;
to_date(字符串,时间格式)则把格式字符串转换时间值,通常在insert 语句中使用。
4、如何修改会话中的日期格式
(1) 在sql*plus中修改当前会话的日期格式
SQL> alter session set nls_date_format = \'yyyy-mm-dd hh24:mi:ss\';
将当前会话的时间格式修改为这种格式: 2013-03-27 15:23:38,即四位年-两位月-两位日,空格,24小时的制的小时:分钟:秒。
这种修改方法,只对当前会话有效。注意,是对当前会话,而不是当前的sql*plus窗口。即如果你这样修改之后,又使用connect命令以其他用户连接到数据库或者是连接到其他的数据库,则这个日期格式就失效了,又恢复到缺省的日期格式。
(2) 修改Oracle客户端工具的配置
修改Oracle客户端工具的全局配置可以修改使用该客户端的日期格式。例如:对于Oracle SQL Developer,在“工具——首选项——数据库——NLS”中配置。我们在使用Oracle SQL Develop导出、导入数据从而实现数据迁移时,一定要注意此处的配置与导出时选用的字符集相匹配,否则有可能导出乱码,从而在导入时报错,一般是报:ora-01843(无效月份)的错。
阅读(2235) | 评论(1) | 转发(0) |