使用IIF on datetime字段输出字符串时发生SQL Server转换错误



我有以下select语句:

SELECT IIF(DateFirstSeen IS NOT NULL, DateFirstSeen, 'Not Seen') as [Date First Seen]

但当我运行这个时,我会得到错误:

Conversion failed when converting character string to smalldatetime data type

有人能帮忙吗?

IIF()的两个分支在混合日期和字符串时必须返回相同的数据类型。

考虑先将日期转换为字符串,例如:

COALESCE(CONVERT(varchar, DateFirstSeen, 23), 'Not Seen')

注意,在处理nulls时,与IIF()相比,COALESCE()缩短了逻辑。

IIF()返回一个值。但也有相互竞争的类型。使用哪种类型?SQL标准强调返回限制性最强的类型,而不是最通用的类型。

要表示'Not Seen',您需要一个字符串。您应该使用具有适当规格的convert()format()

SELECT COALESCE(CONVERT(VARCHAR(255), DateFirstSeen, 120), 'Not Seen')

或者,学会与NULL一起生活并爱上它。

最新更新