Oracle ORA-01873: the leading precision of the interval is too small 解决办法

来源:互联网 发布:今日头条点赞软件下载 编辑:程序博客网 时间:2024/05/17 15:02



Oracle 执行 对时间间隔进行操作的 sql 语句时,报错  ORA-01873: the leading precision of the interval is too small 



select a.* from (select case when num_to_date(nvl(VALIDITY_UNTIL_DATE,0))< sysdate THEN 2                      when num_to_date(nvl(VALIDITY_UNTIL_DATE,0)) - interval '180' day  < sysdate then 1 else 0 end                      FROM YH4_FIRE_LICENSE WHERE ENTERPRISE_ID =1 order by LICENSE_ID desc ) a where rownum = 1

这个是因为 day 时间间隔默认是只支持 -99 ~ 99 的范围,这个时候只要在 把 interval '-183' day  改成  interval '-183'day(4)  即可,把支持时间间隔范围改成 -9999 ~ 9999 四位。


select a.* from (select case when num_to_date(nvl(VALIDITY_UNTIL_DATE,0))< sysdate THEN 2                      when num_to_date(nvl(VALIDITY_UNTIL_DATE,0)) - interval '9999' day(4)  < sysdate then 1 else 0 end                      FROM YH4_FIRE_LICENSE WHERE ENTERPRISE_ID =1 order by LICENSE_ID desc ) a where rownum = 1



对 月 和 年 的时间间隔操作,应该类似,后续有时间在测试更新


阅读全文
0 0
原创粉丝点击