sql >> Base de Datos >  >> RDS >> Sqlserver

Consulta Sql para generar fechas de pago mensuales dentro de un rango de fechas

Puede hacer lo siguiente:

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)

Cuantos dias faltan para que acabe el mes. El número de días encontrado se elimina de otros meses.

DAY(EOMONTH(@SelectedDate) (31) - DAY(@SelectedDate) (30) =left days (1)

Resultado:

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