| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 411 人关注过本帖
标题:求助!关于case when 后报错问题
只看楼主 加入收藏
wuziwei6
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2022-8-8
结帖率:0
收藏
已结贴  问题点数:20 回复次数:5 
求助!关于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
mywisdom88
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:178
帖 子:3080
专家分:8262
注 册:2015-3-25
收藏
得分:10 
那就要看你的具体数据了。
2022-08-08 15:49
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
mywisdom88
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:178
帖 子:3080
专家分:8262
注 册:2015-3-25
收藏
得分:0 
如果是NULL引起的,那就在WHEN这里处理掉
2022-08-09 08:30
laowan001
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:32
帖 子:590
专家分:1364
注 册:2015-12-30
收藏
得分:10 
select case when datediff(minute, 时间,convert(varchar(max),getdate()-1,111))/1440.00 >=16 then '超期'
else '未超期' end as '是否超期'
INTO #tmptable from table
where  时间  !='null'

select 是否超期 from #tmptable where 是否超期='超期'

把查询结果先放到临时表里,然后再做查询,这只是个人习惯,供参考
另:where 条件中判断为空的 null 好像不需要加引号
2022-08-15 09:05
zxl_1998
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2022-9-15
收藏
得分:0 
查询结果最好是放在视图里面,你创建一个视图看下
2022-09-15 14:31
快速回复:求助!关于case when 后报错问题
数据加载中...
 
   



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

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