if里面怎么再加if或有什么更好的写法

怎么在下面的判断语句再写一个条件如果@规定时间等于'00:00:00.000' 再执行,不等于直接返回@规定时间
SQL code

if  convert(varchar,@刷卡时间,8)>convert(varchar,@规定时间,8) AND convert(varchar,@刷卡时间,8)<convert(varchar,@下班时间,8) --判断有没有异常.就是怕别人在8个小时间. 上班卡如果超过了下班时间为异常.
begin
select  '迟到'
select  convert(varchar,(@刷卡时间-@规定时间),8)
end
else
begin
select null
end
--这条语句感觉写起来不好看.有什么更好的写法.我的逻辑判断是这样

作者: chirea   发布时间: 2011-06-15

用case when 呢?

作者: fredrickhu   发布时间: 2011-06-15

select case convert(varchar,@规定时间,8) when '00:00:00.000' then 
if convert(varchar,@刷卡时间,8)>convert(varchar,@规定时间,8) AND convert(varchar,@刷卡时间,8)<convert(varchar,@下班时间,8) --判断有没有异常.就是怕别人在8个小时间. 上班卡如果超过了下班时间为异常.
begin
select '迟到'
select convert(varchar,(@刷卡时间-@规定时间),8)
end
else
begin
select null
end

这样的话报错.我的那个判断语法有没有办法优化.

作者: chirea   发布时间: 2011-06-15

SQL code

if --最外边的条件
begin

if  convert(varchar,@刷卡时间,8)>convert(varchar,@规定时间,8) AND convert(varchar,@刷卡时间,8)<convert(varchar,@下班时间,8) --判断有没有异常.就是怕别人在8个小时间. 上班卡如果超过了下班时间为异常.
begin
select  '迟到'
select  convert(varchar,(@刷卡时间-@规定时间),8)
end
else
begin
select null
end


end

--try

作者: AcHerat   发布时间: 2011-06-15