有一栏显示一些交易的报表
例如:'date-05-03-2020-Tran-100002345-W.44321-CR-9999eu843'
我只从声明中取出了日期。在某些情况下,存在无效日期,例如 date-05-032-2020(月份中的三个数字而不是两个数字)
因此,当我执行查询时出现错误,因为我在使用 TO_DATE 函数将 varchar 从上一条语句中提取后转换为日期
所以我需要的是在 excel 表中但在 oracle SQL 中类似 IfError 的函数
例如:如果 DATE_x 无效则将其替换为 DATE_x2
with x as(
select TO_DATE('01/20/2021','DD-MM-YYYY') DATE_x,
TO_DATE('01/02/2021','DD-MM-YYYY') DATE_x2
from dual
)
select
DATE_x2
from x;
请指教
最佳答案
在 to_date 中有一个 default... on conversion error
参数:https://docs.oracle.com/en/database/oracle/oracle-database/12.2/sqlrf/TO_DATE.html#GUID-D226FA7C-F7AD-41A0-BB1D-BD8EF9440118
因此您可以编写 TO_DATE('01/20/2021' default '01-01-2020' on conversion error, 'DD-MM-YYYY')
或 TO_DATE(' 01/20/2021' 转换错误时默认为空,'DD-MM-YYYY')
。
还有validate_conversion
函数:https://docs.oracle.com/en/database/oracle/oracle-database/12.2/sqlrf/VALIDATE_CONVERSION.html#GUID-DC485EEB-CB6D-42EF-97AA-4487884CB2CD
关于sql - 如何处理 Oracle SQL 中的无效日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68608012/