2016-03-21 24 views
-3

我想有一個條件,它只在工作日執行, 變量@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())[email protected]) or (day(getdate())[email protected]+2) or (day(getdate())[email protected]+4) 

begin 

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

我想在這裏如果條件......(這復位@executeday週一,如果是坐或太陽)

+0

什麼是「日間部分」,「星期一」還是「第21日」?你已經嘗試過什麼了嗎? –

+0

這是代碼。它將每週執行3次,每隔一天,如果在星期六或星期日有任何一天,@Executeday將被重置爲下週的星期一 –

回答

0
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 
相關問題