首页 > Linux操作系统 > Linux操作系统 > Oracle时间格式讨论
2
oracle时间显示形式
通常,客户端与数据库建立起连接后,oracle就会给一
个缺省的时间格式数据的显示形式,与所使用的字符集有关。一般显示年月日,而不显示时分秒。例如,使用us7ascii字符集(或者是其他的英语字符集)
时,缺省的时间格式显示为:28-Jan-2003,而使用zhs16gbk字符集(或其他中文字符集)时时间格式缺省显示为:2003-1月-28。向表中插入数据时,如果不使用转换函数,则时间字段的格式必须遵从会话环境的时间格式,否则不能插入。查看当前会话的时间格式,可以使用以下的SQL语句:
SQL>
select sysdate from dual;
3
向oracle表中插入时间格式的数据
向oracle表插入时间格式的数据是一个相对来讲比较麻烦的事情,要么你严格遵从当前会话的时间格式书写你的时间值,要么使用转换函数自定义时间数据的格式。有两个与时间相关的转换函数:to_char
和 to_date
。to_char(时间值,时间格式)函数将时间值转换为字符串形式,通常在查询中使用;to_date(字符串,时间格式)则把格式字符串转换时间值,通常在insert
语句中使用。在日期格式中,各种日期格式
分量这里不作详细的讨论,请查oracle帮助文档中这两个函数的用法,或者查一查PL/SQL编程的书,讲得很详细的。
4
如何修改会话中的日期格式
修改当前会话中的日期格式据说有三种办法,我只做过前两种办法的试验,修改glogin.sql文件的办法我没有试过,不知道是不是真的能行。下面一一解说。
(1)
在sql*plus中修改当前会话的日期格式
SQL> alter session set nls_date_format = 'yyyy-mm-dd
hh24:mi:ss';
将当前会话的时间格式修改为这种格式: 2003-01-28
15:23:38,即四位年-两位月-两位日,空格,24小时的制的小时:分钟:秒。
这种修改方法,只对当前会话有效。注意,是对当前会话,而不是当前的sql*plus窗口。即如果你这样修改之后,又使用connect命令以其他用户连接到数据库或者是连接到其他的数据库,则这个日期格式就失效了,又恢复到缺省的日期格式。
(2)
修改注册表(只对windows系统)
在注册表hkey_local_machinesoftwareoraclehome0主键中增加一个字串(8i版本),字串名为nls_date_format,字串的值为你希望定义的时间格式,如:
yyyy-mm-dd hh24:mi:ss
,然后重新启动sql*plus。
这种修改方法,对sql*plus窗口有效,即不论你打开多少个sql*plus窗口,缺省的都是这种时间格式。修改服务器端的注册表无效,只有修改客户端的注册表才有效。
unix系统下有没有这类似的方法,我不知道,我不会用unix或者是linux系统。
(3)
修改$oracle_homesqlplusadmin目录中glogin.sql文件
这种方法我没有试过,不敢乱说,以免误导大家。请了解这种方法的高手来指教。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12379366/viewspace-266527/,如需转载,请注明出处,否则将追究法律责任。