首页 > 解决方案 > QUERY 中的 TO_DATE 年份为空

问题描述

我想在一个查询中执行此操作,在该查询中检查我的创建日期是否大于另一个,但表列按年、月和日划分,有时年中有非法值。

Select count{*) from coverage cv
WHERE EXIST (Select * from addressTable ad 
and cv.date > to_date(ad.year||ad.month||ad.day, 'YYYYMMDD')

当我运行它时,我得到错误 ORA-01841: Full year must be between -4713 and +9999 and not be 0.

我可以在查询中写一些东西来忽略非法值并只计算合法值吗?

标签: sqlstringoracledatetimeplsql

解决方案


我可以在查询中写一些东西来忽略非法值而只计算合法值吗?

如果您运行的是 Oracle 12.2 或更高版本,则可以使用on conversion error

to_date(ad.year || ad.month || ad.day default null on conversion error, 'yyyymmdd')

推荐阅读