SQL日期时间或字符串
我在TVF中有以下行:SQL日期时间或字符串,sql,sql-server,type-conversion,Sql,Sql Server,Type Conversion,我在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 charact
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的行时,显示最小日期) 什么让人困惑
case
是一个表达式,需要返回一种类型。SQL Server倾向于转换为更严格的类型。在这种情况下
,更严格的时间是日期时间
<代码>'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
什么让人困惑
case
是一个表达式,需要返回一种类型。SQL Server倾向于转换为更严格的类型。在这种情况下
,更严格的时间是日期时间
<代码>'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
对所有返回数据(然后是结果,然后是结果)使用
CAST(数据返回为varchar(我的所需字符串长度))
。现在,在任何情况下都将返回字符串 对所有返回数据(然后是result和else result)使用CAST(数据返回为varchar(我的所需字符串长度))
。现在,在任何情况下都将返回字符串 唯一的方法是以字符串形式返回日期您正在使用哪个?@a_horse_和\u no_nam Im使用SQL server唯一的方法是以字符串形式返回日期您正在使用哪个?@a_horse_和\u no_nam Im使用SQL server