ORA-01861: 文字与格式字符串不匹配

ORA-01861: 文字与格式字符串不匹配问题分析:出现此问题时一般都是这个字段跟时间有关,这个错误的意思是当前文本的格式和字段要求的格式不匹配

ORA-01861: 文字与格式字符串不匹配

问题分析:
出现此问题时一般都是这个字段跟时间有关,这个错误的意思是当前文本的格式和字段要求的格式不匹配。

第一种可能:
此字段是字符串格式,而你的数据是DATE类型
——这种情况,我们可以改表结构,不过一般不推荐,我们可以用to_char(“数据”,“要转成的格式”)来转成字符串类型。
同样的道理,字符串类型的数据转时间可以用:to_date(“数据”,“字符串数据格式【yyyy-MM-DD HH24:MI:SS】”)转成时间类型的。
ps:当然表结构你可以乱改的,那是最简单粗暴的方法。

第二种可能:
有时当我们确认数据和字段类型是匹配的,那这时候就可能是数据的问题。
例如,当我们使用to_date(“数据”,“格式【yyyy-MM-DD HH24:MI:SS】”)函数时,我们的字符串数据有几个可能不是这种类型的,样例数据:2019-11-27 17:02:333 这样的数据就会导致转化失败。
这时候我们操作这条数据就可以了。
这种情况还是少数,一般更多的是此字段由于没有不允许为空,导致此字段有null的情况,也会导致to_date()函数报错。这样的情况我们可以先对数据进行过滤,可以通过nvl和nvl2函数进行数据的过滤。

以上是我碰到的情况,不一定最全。对了,我用的数据库是oracle

当进行时间的比对时,例如选择之前的数据或者是大与某个时间段的
数据,我们只要保证>或<两边的数据类型一致即可,时间类型或者字符串类型都可以。而且会自动去空,即null的数据。
但< 或>两边先用to_date,to_char函数转化的话,就不会去空了,如果有空就会报上面的错误。

以下是nvl和nvl2的简单说明:

NVL( args1, args2)
功能:如果args1为NULL,则NVL函数返回args2的值,否则返回args1的值,如果两个参数都为NULL ,则返回NULL。

NVL2(args1,args2,args3)
功能:如果参数表达式args1值为NULL,则NVL2()函数返回参数表达式args3的值;如果参数表达式args1值不为NULL,则NVL2()函数返回参数表达式args2的值。

oracle中数据类型都是字符串格式时可以直接比较时间大小

今天的文章ORA-01861: 文字与格式字符串不匹配分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/72804.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注