首页 > 数据库 >oracle报错:ORA-01839: date not valid for month specified(指定月份的日期无效)

oracle报错:ORA-01839: date not valid for month specified(指定月份的日期无效)

时间:2023-02-27 20:31:42浏览次数:56  
标签:dd month yyyy 日期 2020 date 报错


场景

日期值存的是10位字符串,如2020-02-01,sql筛选时需要选1年以内的。

select * from t_user
where
to_date(app_date ,'yyyy-MM-dd') > sysdate-360

查看日志发现报错:
ORA-01839: date not valid for month specified

解决方案

这个问题一般是因为该日期不存在,所以解析的时候失败。

如果超过了31号,那么还好定位,会报错:
月份日的值必须介于1和当月最后一日之间。

但是如果是31日之内,例如02-29这样的数据,是比较隐蔽的,也不容易查找,会报错:
指定月份的日期无效。

我将符合条件的日期先全部拉出来,然后分批执行,报错的话,就继续缩小范围。

select to_date('2020-07-16','yyyy-MM-dd')  from dual union
select to_date('2020-05-21','yyyy-MM-dd') from dual union
select to_date('2020-07-16','yyyy-MM-dd') from dual

最终确定,有个错误日期,2020-06-31,这个日期根本不存在,坑人。
修改为正确日期即可。
最后不要忘了,把其他的日期也跑一遍,确保没有其他的错误日期。


标签:dd,month,yyyy,日期,2020,date,报错
From: https://blog.51cto.com/u_7341513/6089127

相关文章