Sql 仅在工作日(即周一至周五)执行的if条件

Sql 仅在工作日(即周一至周五)执行的if条件,sql,sql-server,sql-server-2012,Sql,Sql Server,Sql Server 2012,我想要一个只在工作日执行的条件, 变量@Executedate为int类型,仅取日期时间的日部分,如果@Executeday为周六或周日,则应重置为周一 这是一段代码 Declare @Executeday int declare @time varchar(200) set @time = convert(varchar(8), getdate(), 108) if day(getdate()) < 16 begin

我想要一个只在工作日执行的条件, 变量@Executedate为int类型,仅取日期时间的日部分,如果@Executeday为周六或周日,则应重置为周一

这是一段代码

Declare @Executeday int      

declare @time varchar(200)

set @time =  convert(varchar(8), getdate(), 108)

if day(getdate()) < 16                          
begin 

set @Executeday = (select top 1 Description from cts_configuration(nolock) where name like 'ReminderMailerFirstFortNightDay')

end
else                          
begin         
set @Executeday = (select top 1 Description from cts_configuration(nolock) where name like 'ReminderMailerSecondFortNightDay')

 end

if (day(getdate())=@Executeday) or (day(getdate())=@Executeday+2) or (day(getdate())=@Executeday+4)

begin

if(@time between '10:00:00' and '11:00:00') 
begin

我想要这里的if条件…将@executeday重置为周一,如果是sat或sun

周一或21日是哪一天?你已经试过什么了吗?这是代码。它将每周执行3次,每隔一天执行,如果任何一天是周六或周日,@Executeday shud将重置为下周的周一
DECLARE @ExecuteDay AS int = 7;

DECLARE @Today AS date = GETDATE();
DECLARE @ExecuteDate AS date = DATEADD(day, @ExecuteDay - DATEPART(day, @Today), @Today);
DECLARE @WeekDay AS int = (@@DATEFIRST + DATEPART(WEEKDAY, @ExecuteDate)) % 7;

IF @WeekDay IN (0, 1)
    SET @ExecuteDate = DATEADD(day, 2 - @WeekDay, @ExecuteDate)

PRINT @ExecuteDate