怎么在下面的判断语句再写一个条件如果@规定时间等于'00:00:00.000' 再执行,不等于直接返回@规定时间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
--这条语句感觉写起来不好看.有什么更好的写法.我的逻辑判断是这样
begin
select '迟到'
select convert(varchar,(@刷卡时间-@规定时间),8)
end
else
begin
select null
end
--这条语句感觉写起来不好看.有什么更好的写法.我的逻辑判断是这样
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这样的话报错.我的那个判断语法有没有办法优化.
if --最外边的条件
beginif 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
declare @规定时间 datetime
declare @下班时间 datetime
set @刷卡时间='2011-06-15 02:16:17.000'
set @规定时间='1900-01-01 00:00:00.000'
set @下班时间='1900-01-01 08:00:00.000'if convert(varchar,@规定时间,8) = '00:00:00.000'
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
endend
declare @刷卡时间 datetime
declare @规定时间 datetime
declare @下班时间 datetime
set @刷卡时间='2011-06-15 02:16:17.000'
set @规定时间='1900-01-01 00:00:00.000'
set @下班时间='1900-01-01 08:00:00.000'select '迟到' ,convert(varchar,(@刷卡时间-@规定时间),8)
where convert(varchar,@刷卡时间,8)>convert(varchar,@规定时间,8) AND convert(varchar,@刷卡时间,8)<convert(varchar,@下班时间,8)
and convert(varchar,@规定时间,8) = '00:00:00'
谢谢豆子
我的意思是'@规定时间'这个值是不定的.我就是要判断如果他的值是'00:00:00.000'
就执行
这段
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如果'@规定时间'不等于'00:00:00.000'就不运行上面的判断.
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
就执行
这段
if convert(varchar,@刷卡时间,8)>convert(varchar,@规定时间,8) AND convert(varchar,@刷卡时间,8)<convert(varchar,@下班时间,8)
begin
select '迟到'
select convert(varchar,(@刷卡时间-@规定时间),8)
end
else
begin
select null
end如果'@规定时间'不等于'00:00:00.000'就不运行上面的判断.
if convert(varchar(25),@规定时间,14)='00:00:00 000'
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不过,你要注意,除非是人为设定,否则秒级和毫秒级是很难弄到都为0的,要防止不去执行块里的内容.
declare @刷卡时间 datetime
declare @规定时间 datetime
declare @下班时间 datetime
set @刷卡时间='2011-06-15 02:16:17.000'
set @规定时间='1900-01-01 00:00:00.000'
set @下班时间='1900-01-01 08:00:00.000'if convert(varchar(12),@规定时间,14)='00:00:00:000'
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
/*
----
迟到(1 行受影响)
------------------------------
02:16:17(1 行受影响)*/
用if感觉写得太长了...
declare @刷卡时间 datetime
declare @规定时间 datetime
declare @下班时间 datetime
set @刷卡时间='2011-06-15 02:16:17.000'
set @规定时间='1900-01-01 00:00:00.000'
set @下班时间='1900-01-01 08:00:00.000'select (case when convert(varchar(12),@规定时间,14)='00:00:00:000' then
(case when convert(varchar,@刷卡时间,8)>convert(varchar,@规定时间,8) AND convert(varchar,@刷卡时间,8)<convert(varchar,@下班时间,8) --判断有没有异常.就是怕别人在8个小时间. 上班卡如果超过了下班时间为异常.
then '迟到,'+convert(varchar,(@刷卡时间-@规定时间),8)
else null end)
end)
/*
-----------------------------------
迟到,02:16:17(1 行受影响)
*/
select case when convert(varchar(12),@规定时间,8)='00:00:00' then
case when convert(varchar,@刷卡时间,8) between
convert(varchar,@规定时间,8) AND convert(varchar,@下班时间,8)
then convert(varchar,(@刷卡时间-@规定时间),8)
end
end