如何在 Access 查询中使用 CDATE 在转换前验证/清理文本日期

How to validate / scrub text date before conversion using CDATE in Access Query

我正在使用 Access 查询重新格式化和连接多个文件以创建输出文件。 我正在处理一个以 YYYYMMDD 文本格式提供日期的输入文件。我正在尝试使用 CDATE & mid/left/right 转换为日期格式。但是,我发现文件中的某些日期是无效的,例如 2/30/2019 (20190230),这会导致数据不匹配错误。 我无法控制提供此文件的系统,因此我需要能够在我的数据库中处理此问题。

我试过IIF(ISERROR(CDATE()),NULL,CDATE())没用。当前表达式:

IIf(IsError(CDate(Mid([firstofSTART_DATE],5,2) & "/" & 
Right([firstofSTART_DATE],2) & "/" & 
Left([firstofSTART_DATE],4))),Null,CDate(Mid([firstofSTART_DATE],5,2) & "/" & 
Right([firstofSTART_DATE],2) & "/" & Left([firstofSTART_DATE],4)))

我可以将错误日期更正为任何可以轻松过滤掉的日期(例如 NULL 或“”)。

您可以使用 DateSerial:

DateSerial(Mid([firstofSTART_DATE],1,4), Mid([firstofSTART_DATE], 5,2), Mid([firstofSTART_DATE],7,2))

and/or 过滤器 在:

IsDate(Format([firstofSTART_DATE], "@@@@\/@@\/@@"))