我的datediff语句出错。注释掉datediff,“ Nothing clicked”没问题。我认为这与日期变量的格式有关。
错误信息..
消息245,级别16,状态1,第2行,将varchar值“ Nothing clicked”转换为数据类型int时,转换失败。
select
case
when stVs.DateLastAction is null then 'Nothing clicked'
else DATEDIFF(MI,StVs.DateSessionStarted,stVs.DateLastAction)
end as test
From Stats_VisitorSessions StVs
尝试:
select
case
when stVs.DateLastAction is null then 'Nothing clicked'
else CONVERT(varchar(30),DATEDIFF(MI,StVs.DateSessionStarted,stVs.DateLastAction))
-- ^^^^^^^^^^^^^^^^^^^^ ^
end as test
From Stats_VisitorSessions StVs
如果test
结果集列是数字或字符串,则TSQL很难解决。
一个CASE
表达式只能返回一个数据类型。它不能同时返回数字和字符串数据类型。在OP的情况下,它决定使用数字数据类型,然后处理更多的行,并发现它必须是字符串,然后失败。请参阅数据类型优先级。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句