Puoi come di seguito:
DECLARE @SelectedDate DATETIME = '2016.01.30'
SELECT
DATEADD(DAY, -1 - (DAY(EOMONTH(@SelectedDate)) - DAY(@SelectedDate)), DATEADD(MONTH, v.m, DATEFROMPARTS(YEAR(@SelectedDate), 1, 1)))
FROM
(VALUES (1), (2), (3), (4), (5), (6), (7), (8), (9), (10), (11), (12)) AS v(m)
Quanti giorni mancano prima della fine del mese. Il numero di giorni trovati viene rimosso dagli altri mesi.
DAY(EOMONTH(@SelectedDate)
(31) - DAY(@SelectedDate)
(30) =left days
(1)
Risultato:
2016-01-30
2016-02-28
2016-03-30
2016-04-29
2016-05-30
2016-06-29
2016-07-30
2016-08-30
2016-09-29
2016-10-30
2016-11-29
2016-12-30