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

शनिवार की तारीख (या किसी अन्य कार्यदिवस की तारीख) कैसे प्राप्त करें - SQL सर्वर

यह एक फ़ंक्शन है जो अगले शनिवार को वापस आ जाएगा यदि आप इसे इस तरह कहते हैं:

SELECT dbo.fn_Get_NextWeekDay('2011-08-08', 6)

"6" संभावित मानों की सूची से आता है आप DATEFIRST . के लिए सेट कर सकते हैं ।

आप दूसरे पैरामीटर को तदनुसार बदलकर सप्ताह के किसी अन्य दिन को प्राप्त कर सकते हैं।

यह कार्य है:

IF OBJECT_ID('dbo.fn_Get_NextWeekDay') IS NOT NULL 
  DROP FUNCTION dbo.fn_Get_NextWeekDay
GO
CREATE FUNCTION dbo.fn_Get_NextWeekDay(
     @aDate   DATETIME
   , @dayofweek      INT
    /*
      @dw - day of the week
      1 - Monday
      2 - Tuesday
      3 - Wednesday
      4 - Thursday
      5 - Friday
      6 - Saturday
      7 - Sunday
    */   
  )
RETURNS DATETIME 
AS
/*
  SELECT dbo.fn_Get_NextWeekDay('2011-08-08', 6)
  SELECT dbo.fn_Get_NextWeekDay('2011-08-08', 1)
*/
BEGIN
  RETURN 
      DATEADD(day
        , ( @dayofweek + 8 - DATEPART(dw, @aDate) - @@DATEFIRST ) % 7
        , @aDate 
      )  
END
GO

[संपादित करें] यह एक और उपाय हो सकता है। यह किसी भी भाषा में काम करना चाहिए:

IF OBJECT_ID('dbo.fn_NextWeekDay') IS NOT NULL 
  DROP FUNCTION dbo.fn_NextWeekDay
GO
CREATE FUNCTION dbo.fn_NextWeekDay(
     @aDate     DATE
   , @dayofweek NVARCHAR(30)
  )
RETURNS DATE
AS
/*
  SELECT dbo.fn_NextWeekDay('2016-12-14', 'fri')
  SELECT dbo.fn_NextWeekDay('2016-03-15', 'mon')
*/
BEGIN
  DECLARE @dx INT = 6
  WHILE UPPER(DATENAME(weekday,@aDate)) NOT LIKE UPPER(@dayofweek) + '%'
  BEGIN

    SET @aDate = DATEADD(day,1,@aDate)

    SET @[email protected]
    if @dx < 0 
    BEGIN
      SET @aDate = NULL 
      BREAK
    END
  END

  RETURN @aDate

END
GO


  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 सर्वर पुनर्स्थापना डेटाबेस का अन्वेषण करें

  2. ssms में संग्रहीत कार्यविधि को संशोधित करने के लिए शॉर्टकट कुंजी

  3. एकल तालिका स्तंभ में एकाधिक बिट मान संग्रहीत करें

  4. SQL:वेरिएबल के आधार पर डायनेमिक कॉलम नाम चुनें

  5. Sql Server 2008 में गतिरोध समस्या निवारण