एक महीना जोड़ने के बाद 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...