निम्नलिखित मेरे लिए काम करता है:
declare @TransactionDate DATETIME
DECLARE @TransactionDay tinyint
declare @startDate datetime
declare @startDay int
declare @NextTransactionDate datetime
--Monday
set @TransactionDate = '2011-05-05'
SET @TransactionDay = DATEPART(dw, @TransactionDate)
--Wednesday
set @startDate = '2011-04-27'
set @startDay = datepart(dw,@startDate)
set @NextTransactionDate= DATEADD(DAY, ((@startDay - @TransactionDay) + 7) % 7 ,@TransactionDate);
select @startDay, DATEPART(dw, @NextTransactionDate), @NextTransactionDate
इसके मांस की व्याख्या करने के लिए, मुझे प्रारंभ दिनांक और लेनदेन दिनांक के लिए सप्ताह के दिन में अंतर मिल रहा है। मैं इसमें 14 जोड़ता हूं क्योंकि ऋणात्मक संख्या मोडुलो धनात्मक संख्याओं का परिणाम ऋणात्मक संख्या में होता है, जो आपकी अगली लेन-देन की तारीख अतीत में डाल देगा (और आप ऐसा नहीं चाहते हैं)। सबसे खराब स्थिति तब होती है जब @startDay 1 होता है और @TransactionDay 7 होता है जिससे -6 का अंतर होता है। 7 जोड़ने से यह सुनिश्चित होता है कि अंतर सकारात्मक है लेकिन फिर भी उसी तुल्यता वर्ग में है जो रिंग n mod 7 में वास्तविक अंतर है (क्षमा करें ... मैं थोड़ा गणितज्ञ हूं)।