Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

यदि आप तिथि पास कर लेते हैं तो NextDayofWeek कैसे प्राप्त करें?

निम्नलिखित मेरे लिए काम करता है:

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 में वास्तविक अंतर है (क्षमा करें ... मैं थोड़ा गणितज्ञ हूं)।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर में शीर्ष के साथ संबंधों का उपयोग कैसे करें - SQL सर्वर / TSQL ट्यूटोरियल भाग 114

  2. SQL सर्वर से कनेक्शन कभी-कभी काम करता है

  3. जब ऑर्डर कॉलम में समान डेटा होता है तो ऑर्डरबाय क्लॉज अलग-अलग परिणाम सेट करता है

  4. पीसी-नाम\SQLEXPRESS से कनेक्ट नहीं हो सकता

  5. SQL सर्वर में एकल क्वेरी में पाँचवाँ उच्चतम वेतन कैसे प्राप्त करें