Ultimo dia del Mes con SQL Server y otros
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:
gracias.
me sirvió en el trabajo.
un abrazo.
Feliz Navidad y Año Nuevo.
Es la idea 🙂 …
Muchas Gracias
Muchas gracias, me ahorró mucho tiempo.
Gracias por el post!!! excelente… me sirvió muchísimo!!!
Para trabajar con cuatrimestre
SELECT DATEADD(qq,DATEDIFF(qq,0,GETDATE()),0) as FirstDayOfQuarter
SELECT DATEADD(qq,DATEDIFF(qq,-1,GETDATE()),-1) as LastDayOfQuarter
Buen aporte solo una duda, intente hacer lo del cuatrimestre pero en realidad muestra los tres meses posteriores.
Rodrigo:
Tenés razón, son trimestres (y no cuatrimestre)
declare @fecha_Q1 as DateTime --Primer Trimestre
declare @fecha_Q2 as DateTime -- Segundo Trimestre
declare @fecha_Q3 as DateTime -- Tercer Trimestre
declare @fecha_Q4 as DateTime -- Tercer Trimestre
set @fecha_Q1='01/25/2017' -- '25 Ene 2017 -> 1er Trimestre
set @fecha_Q2='05/25/2017' -- '25 Mayo 2017 -> 2do Trimestre
set @fecha_Q3='08/25/2017' -- '25 Ago 2017 -> 3er Trimestre
set @fecha_Q4='11/25/2017' -- '25 Nov 2017 -> 4to Trimestre
SELECT DATEADD(qq,DATEDIFF(qq,0,@fecha_Q1),0) as Prim_Dia_Trime, DATEADD(qq,DATEDIFF(qq,-1,@fecha_Q1),-1) as Ult_Dia_Trime
union
SELECT DATEADD(qq,DATEDIFF(qq,0,@fecha_Q2),0) as Prim_Dia_Trime, DATEADD(qq,DATEDIFF(qq,-1,@fecha_Q2),-1) as Ult_Dia_Trime
union
SELECT DATEADD(qq,DATEDIFF(qq,0,@fecha_Q3),0) as Prim_Dia_Trime, DATEADD(qq,DATEDIFF(qq,-1,@fecha_Q3),-1) as Ult_Dia_Trime
union
SELECT DATEADD(qq,DATEDIFF(qq,0,@fecha_Q4),0) as Prim_Dia_Trime, DATEADD(qq,DATEDIFF(qq,-1,@fecha_Q4),-1) as Ult_Dia_Trime
Prim_Dia_Tri Ult_Dia_Tri
2017-01-01 00:00:00.000 2017-03-31 00:00:00.000
2017-04-01 00:00:00.000 2017-06-30 00:00:00.000
2017-07-01 00:00:00.000 2017-09-30 00:00:00.000
2017-10-01 00:00:00.000 2017-12-31 00:00:00.000