ORA-01830: date format picture ends before converting entire input string的几种原因
oracle数据库的日期类型与比较
在数据库中我们可以用Date类型来存储时间,有时为了方便也会用varchar2类型来存储时间信息。我们在对日期进行比较的时候可能会因为格式的问题而产生异常。
异常产生总结
-
在进行时间比较的时候,我们常用to_date()和to_char()方法来进行格式转换
例:存储内容为varchar2类型时间yeardate,内容为"2019-02-05",我们需要比较月份“2019-02”
//以下sql因为内容的格式不能匹配,所以会产生ORA-01830的异常 to_date(yeardate,'yyyy-mm') = to_date('2019-02','yyyy-mm'); /** * 可以变为以下两种格式 **/ 1.to_date(substr(yeardate,1,7),'yyyy-mm')=to_date('2019','yyyy-mm') 2.to_char(to_date(yeardate,'yyyy-mm-dd'),'yyyy-mm')=to_date('2019','yyyy-mm')
-
存储内容格式不合规
这是最坑的,在开发库中有时因为测试或其他这种原因,单独有那一条或几条数据不符合总体格式的要求,导致运行出现异常。