废了好大劲才找到原因:
之前的SQL中的一句:
case birthYm when null then 0 when '' then 0 else datediff(year,birthYm,getDate()) end age,
改成:
case isDate(birthYm) when 0 then 0 else datediff(year,birthYm,getDate()) end age,
之前是因为birthYM是varchar(20)型的,后来有一条1986.1数据进去了,那句就报错了。
注意isDate这个函数。