Trabajando con funciones TSQL para realizar cálculos de Fechas
A continuación una serie de funciones en TSQL útiles para el cálculo de fechas:
-->Mes Actual:
-----------------------------------
--Primer día del mes actual
SELECT DATEADD(s,0,DATEADD(mm, DATEDIFF(m,0,GETDATE()),0))
--Último día del mes actual
SELECT DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE())+1,0))
-->Mes Anterior:
-----------------------------------
--Primer día del mes anterior
SELECT DATEADD(s,0,DATEADD(mm, DATEDIFF(m,0,GETDATE())-1,0))
--Último día del mes anterior
SELECT DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE()),0))
-->Mes Siguiente:
-----------------------------------
----Primer día del mes siguiente
SELECT DATEADD(s,0,DATEADD(mm, DATEDIFF(m,0,GETDATE())+1,0))
----Último día del mes siguiente
SELECT DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE())+2,0))
--> Trimestre Actual:
-----------------------------------
----Primer día del trimestre actual
SELECT DATEADD(qq,DATEDIFF(qq,0,GETDATE()),0)
----Último día del trimestre actual
SELECT DATEADD(qq,DATEDIFF(qq,-1,GETDATE()),-1)
Resultados
Con la fecha 10 de Noviembre del 2017 esto serían los resultados
Otra alternativa
Continuando con el trabajo con fechas con TSQL podemos hacer lo mismo, pero con una función nativa: EOMONTH()
Si les interesa les dejo el link, que incluye como siempre un caso práctico: