sql - 如何处理 Oracle SQL 中的无效日期

标签 sql oracle date exception

有一栏显示一些交易的报表

例如:'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/

相关文章:

sql - 如何选择一列不同的内容?

c# - Entity Framework 6 - 使用 ToString 加入时出现 ORA-00932

mysql - 连续 5 次从 DB 休假

php - 如果日期小于 3 个月,则检查验证

sql - Oracle 中向 timestamp(6) 类型字段插入数据的语法是什么

ios - 将字符串格式化为 HH :mm in Swift

mysql - 获取 SQL 查询中创建的别名的总和

mysql - 从 Xoops 数据库中计算并插入评论

MySQL Slow LEFT JOIN Query 使用派生查询进行连接时

sql - 将 SYSDATE 放置在 WHERE 子句中如何影响结果集?