出现:ORA-01830日期格式图片在转换整个输入字符串之前结束的报错该怎么办

先说答案

如果知道日期格式类型直接用to_date转换,但要注意to_date函数使用时必须要与存储的数据格式一致

比如他是yyyy/MM/dd hh:mi:ss那你就不能变成yyyy/MM/dd,不然会报标题所说的错误,如果你只是想要到日层次的转换,可以先截取数据,再用to_date函数

to_char(to_date(substr(a.startdate,1,10),'yyyy/MM/dd'),'yyyy/MM/dd)>'2023/01/01'


在项目中接手他人创建的数据表里出现时间字段是varchar类型,该如何解决日期比较这个问题呢?

首先,我先祝福创建这张表的人一胎生八个,时间字段整个varchar类型

出现:ORA-01830日期格式图片在转换整个输入字符串之前结束的报错该怎么办_第1张图片

 然后因为要计算这张表中在某个时间段中的datacount数据处理条数的总数,因为一开始不知道他设置的是varchar类型,所以觉得很简单,一个to_char函数不就搞定了,然后

出现:ORA-01830日期格式图片在转换整个输入字符串之前结束的报错该怎么办_第2张图片

 好家伙,此时的我已经发觉了事情不太简单,于是想着用to_date函数给它抢救一下,成功后在给它夹一个to_char函数,在进行日期比较

出现:ORA-01830日期格式图片在转换整个输入字符串之前结束的报错该怎么办_第3张图片

 然后换了个报错,上网搜索之后,发现是说要与数据类型一致,我就去看数据存储的是什么格式 2019/02/10 14:25:504 这种格式我搜了半天没找到于是用 yyyy/MM/dd hh24:mi:ss格式去试试,果不其然的还是报这个错误。

于是就想到是不是可以先截取它的前面日期再给它变成我需要的日期格式,因为我进行日期比较的话也就是到日的层次

出现:ORA-01830日期格式图片在转换整个输入字符串之前结束的报错该怎么办_第4张图片

 substr(字段,开始位置,结束位置,可不填)

to_char(to_date(substr(a.startdate,1,10),'yyyy/MM/dd'),'yyyy/MM/dd)>'2023/01/01'

这次终于成功了

觉得有用的留下你的赞,万分感谢

你可能感兴趣的:(数据库,java,bug)