我在 TVF 中有以下几行:
CASE WHEN MIN(ISNULL(EersteStart,GETDATE())) = GETDATE()
then 'InOverleg'
else MIN(ISNULL(EersteStart,GETDATE())) end as EersteStartDatum
除了这看起来有点低效之外,它仍然不起作用,因为它会产生以下错误:
Conversion failed when converting date and/or time from character string.
我理解错误,但如何调整查询以提供我想要的功能?(当底层查询为每行的所有 EersteStartDatum 字段返回 null 时返回字符串 'InOverleg',或者当存在 EersteStartDatum 不为 NULL 的行时显示 MIN 日期)。
什么令人困惑?case
是一个表达式,需要返回一种类型。SQL Server 倾向于转换为限制性更强的类型。在这case
,比较严格的时间是一个datetime
。'InOverLeg'
不转换。
您可以将日期转换为字符串:
(CASE WHEN MIN(COALESCE(EersteStart, GETDATE())) = GETDATE()
THEN 'InOverleg'
ELSE CONVERT(VARCHAR(10), MIN(COALESCE(EersteStart, GETDATE())), 121) -- or whatever format you like
END) as EersteStartDatum
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句