在日期时间字段上使用 IIF 输出字符串时 SQL Server 转换错误

nec*_*666 0 sql t-sql sql-server string date

我有以下选择语句:

SELECT IIF(DateFirstSeen IS NOT NULL, DateFirstSeen, 'Not Seen') as [Date First Seen]
Run Code Online (Sandbox Code Playgroud)

但是当我运行这个时,我收到错误:

Conversion failed when converting character string to smalldatetime data type
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙吗?

GMB*_*GMB 5

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

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

 COALESCE(CONVERT(varchar, DateFirstSeen, 23), 'Not Seen')
Run Code Online (Sandbox Code Playgroud)

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