我的程序中有一个if else
块。根据今天的日期在此块中设置临时变量 @timeID
的值。
declare @timeId int
if(datename(Dw,getdate())='Sunday' or datename(Dw,getdate())='Saturday')
begin
set @timeId=2
end
if(datename(Dw,getdate())!='Sunday' or datename(Dw,getdate())!='Saturday')
begin
if(convert(varchar(11),getdate(),108)<='08:30:00')
begin
set @timeId=0
end
else
begin
set @timeId=1
end
end
select @timeId as TimeID
由于今天星期六, @timeID
必须设置为2。
但是输出会显示 @timeId=1
,这会导致我的程序出错。请帮助解决问题。
select datename(Dw,getdate())
返回星期六
答案 0 :(得分:4)
好的,假设是星期六:
第一个IF
块运行。
然后第二个IF
块因OR
上的!= Sunday
条件而运行,覆盖@timeid
。
你想要一个ELSE(事实上,你可以放弃额外的测试,简化代码):
declare @timeId int
if(datename(Dw,getdate())='Sunday' or datename(Dw,getdate())='Saturday')
begin
set @timeId=2
end
ELSE
begin
if(convert(varchar(11),getdate(),108)<='08:30:00')
begin
set @timeId=0
end
else
begin
set @timeId=1
end
end
答案 1 :(得分:3)
您的第二个if子句应使用AND,而不是OR。每天不是星期天或星期六