标题:求助!关于case when 后报错问题
取消只看楼主
wuziwei6
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2022-8-8
结帖率:0
已结贴  问题点数:20 回复次数:1 
求助!关于case when 后报错问题
select case when datediff(minute, 时间,convert(varchar(max),getdate()-1,111))/1440.00 >=16 then '超期'
else '未超期' end as '是否超期'
from table
where  时间  !='null'

上面这段执行没问题,但是我我再筛选出超期就报错了,从字符串转换日期和/或时间时,转换失败。

select 是否超期
from(
select case when  datediff(minute, 时间,convert(varchar(max),getdate()-1,111))/1440.00 >=16 then '超期'
else '未超期' end as '是否超期'
from table
where  时间  !='null')a
where 是否超期='超期'

请各位大哥帮忙看看是什么问题,是因为时间里面有null吗,怎么解决。
搜索更多相关主题的帖子: case where 时间 报错 是否 
2022-08-08 10:37
wuziwei6
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2022-8-8
得分:0 
select 是否超期
from(
select when 时间 ='null' then ''
when  datediff(minute, 时间,convert(varchar(max),getdate()-1,111))/1440.00 >=16 then '超期'
else '未超期' end as '是否超期'
from table
where  时间  !='null')a
where 是否超期='超期'

我在第一个case when 加了个判断,时间是null 的为空值,下面就不会报错了。我不理解的是不是where 那里已经筛选出<>null吗,为什么case when 判断的时候还要报错
2022-08-08 16:47



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-509736-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.049123 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved