解决ora-01861文字与格式字符串不匹配
日期:2008年5月28日 作者: 查看:[大字体 中字体 小字体]-
症状:c/s程序本来运行正常,一次重装系统,重装Oracle客户端后,insert日期格式数据,出现题目中错误。
解决办法:
Oracle时间格式讨论
在网上看见不少oracle新学者对oracle的时间格式很烦,经常是设计了一个带时间字段的表之后,向表插入数据失败。回想起自己刚开始学习oracle时,也对这个时间格式摸不着头脑,虽然是小小的问题,高手们不屑于讨论,但对初学者来讲,这也是一个不大不小的坎,没找到门路的话, 可能几天都过不去,其实就是一层窗户纸,没什么难的。这里做一个简单的小结,因水平有限,请高手补充指正。
1 oracle对时间格式的数据存贮
oracle数据库中存放时间格式的数据,是以oracle特定的格式存贮的,占7个字节,与查询时显示的时间格式无关,具体哪个字节表示什么,我不太清楚,请高手补充。存贮的时间包括年月日时分秒,最小精度为秒,不存贮秒以下的时间单位。因此在一些前台支持毫秒级的程序(如PB客户端程序)连接到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版本,9i也可以),字串名为nls_date_format,字串的值为你希望定义的时间格式,如: yyyy-mm-dd hh24:mi:ss ,然后重新启动sql*plus.这种修改方法,对sql*plus窗口有效,即不论你打开多少个sql*plus窗口,缺省的都是这种时间格式。修改服务器端的注册表无效,只有修改客户端的注册表才有效。
unix系统下有没有这类似的方法,我不知道,我不会用unix或者是Linux系统。
- [1] [2] 下一页
-
- 解决ora-01861文字与格式字符串不匹配 相关文章:
- ·数据库连接字符串大全
- ·解决ora-01861文字与格式字符串不匹配
- ·MySQL的字符串函数大全(1)
- ·C#中利用正则表达式实现字符串搜索
- ·VC++下用MSComm控件实现串口通讯
- ·asp.net2.0中读取web.config数据库连接字符串2种方法
- ·oracle函数之常见单行字符串函数
- ·风色幻想3-秘籍串串烧
- ·影音风暴错误提示:在您输入的命令行中发现无法识别的参数字符串
- ·ASP中字符串函数的应用
- 解决ora-01861文字与格式字符串不匹配 相关软件
- ·串口调试助手 V4.0
- ·数字祖玛大串连
- ·字符串查找替换工具 V1.0
- ·Commix 工业控制串口调试工具 V1.3
- ·水晶泡泡大串连
- ·ComONE串口调试工具 V1.0.0.2
- ·串口调试助手(CM精装版) V3.1
- ·字符串替换器 V1.0
- ·串讲课程会计_唐宁01
- ·CJC单词串串烧 V1.6
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
精品推荐
热点TOP10
- ·Oracle触发器详细介绍
- ·详细介绍ORACLE sqlplus命令
- ·Oracle的SQL*PLUS命令的使用大全
- ·VMware下RedHat安装Oracle 9i RAC全攻略
- ·ORACLE备份&恢复案例--ORACLE BACKUP&RESTORE SCHEME
- ·9istatspack使用手册
- ·Oracle 游标使用大全
- ·(原创)ORA-01092: ORACLE 例程终止。强行断开连接
- ·Oracle的SQL语句执行效率问题查找与解决方法
- ·oracle中pro*c的学习
- ·Oracle数据库检查死锁的sql
- ·ORACLE傻瓜手册长篇连载
- ·用正则表达式函数验证身份证号码合法性
- ·自己整理的OCI文档,抛砖引玉
- ·Oracle中分区表的使用
- ·ORA-12154: TNS: 无法解析指定的连接标识符
- ·ORACLE UPDATE 语句语法与性能分析的一点看法
- ·解决ora-01861文字与格式字符串不匹配
- ·今天帮朋友解决了一个ora-00904的错误
- ·Oracle SQL精妙SQL语句讲解
特别推荐
- ·入侵Oracle数据库常用操作命令
- ·ORACLE UPDATE 语句语法与性能分析的一点看法
- ·Oracle SQL精妙SQL语句讲解
- ·Oracle环境下APACHE虚拟服务器如何设置
- ·常见Oracle HINT的用法
- ·ORA-00257: archiver error. Connect internal only, until freed.
- ·oracle的update问题
- ·小议索引的使用
- ·oracle产品服务和技术级别介绍,OrACLE服务
- ·Oracle 数据类型
- ·Oracle数据库检查死锁的sql
- ·怎样将冷备份移植到另一台Solaris机器上
- ·Oracle 动态SQL返回单条结果和结果集
- ·手动建立 Oracle9i 数据库
- ·Oracle内存结构(二)----Shared Pool的详细信息
- ·DELPHI 调用 Oracle 存储过程并返回数据集的例子.
- ·关于block中行数据的存储与空间重组三
- ·Sybase及SQL Anywhere SQL语句小结
- ·ORACLE备份&恢复案例--ORACLE BACKUP&RESTORE SCHEME
- ·Oracle ERP 11业务调研报告-AP应付帐
