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

SQL कैसे निर्धारित करें कि दिनांक माह दिनांक 29,30 या 31 है या नहीं?

एक महीना जोड़ने के बाद DAY की तुलना करें। यदि कम है क्योंकि DATEADD इसके बजाय महीने के अंत में जाता है (उदाहरण के लिए 31 जनवरी से 28 फरवरी), तो अगले महीने पर जाएं

यहां DATEADD/DATEDIFF अगले महीने की शुरुआत में चला जाता है

declare @StartEffectiveDate datetime
set @StartEffectiveDate = '2011-01-20'
SELECT
    CASE
        WHEN DAY(@StartEffectiveDate) <= DAY(DATEADD (MONTH, 1, @StartEffectiveDate)) THEN DATEADD (MONTH, 1, @StartEffectiveDate)
        ELSE DATEADD(day, 1, DATEADD (MONTH, 1, @StartEffectiveDate))
    END

set @StartEffectiveDate = '2011-01-31'
SELECT
    CASE
        WHEN DAY(@StartEffectiveDate) <= DAY(DATEADD (MONTH, 1, @StartEffectiveDate)) THEN DATEADD (MONTH, 1, @StartEffectiveDate)
        ELSE DATEADD(day, 1, DATEADD (MONTH, 1, @StartEffectiveDate))
    END

set @StartEffectiveDate = '2011-02-28'
SELECT
    CASE
        WHEN DAY(@StartEffectiveDate) <= DAY(DATEADD (MONTH, 1, @StartEffectiveDate)) THEN DATEADD (MONTH, 1, @StartEffectiveDate)
        ELSE DATEADD(day, 1, DATEADD (MONTH, 1, @StartEffectiveDate))
    END

संपादित करें:केवल एक अतिरिक्त दिन जोड़ने की जरूरत है बल्कि कुछ फैंसी DATEADD/DATEDIFF...



  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 सर्वर से आउटपुट और C# अलग

  2. SQL सर्वर में आपातकालीन मोड से डेटाबेस पुनर्प्राप्त करें

  3. परिणाम प्रदर्शित किए बिना SQL क्वेरी कैसे निष्पादित करें

  4. एकाधिक तालिकाओं का संदर्भ देने वाली विदेशी कुंजी

  5. जब DRY सिद्धांत लागू नहीं होता है:SQL सर्वर में बिटवाइज़ संचालन