IsError的奇怪行为

时间:2016-05-17 07:37:08

标签: sql ms-access

我有一个日期格式为文本的列,缺少的值标有-

我尝试创建一个表达式(SQL,而不是VBA),将该列转换为日期,将缺失值转换为0

  • 此表达式按预期工作:
    IIf([column]="-",0,CDate([column])

  • 但是,如果我尝试使某些更通用,查找所有非日期输入,我会获得所有非日期的#Error
    IIf(IsError(CDate([column])),0,CDate([column])

我在这里缺少什么?

1 个答案:

答案 0 :(得分:2)

我会尝试使用isDate()替代:

IIf(IsDate([column]),CDate([column],0)

请注意,由于表达式已更改,我已在iif()中交换了true和false部分。

虽然,如果日期的唯一替代方法是您在第一个表达式中使用的短划线-符号,我相信IsNumeric()函数也可以使用。