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

Primer_Y_Ultimo_Dia_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:


9 comentarios
  1. Mauro Bernal
    Mauro Bernal Dice:

    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

    Responder
  2. Mauro Bernal
    Mauro Bernal Dice:

    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

    Responder

Trackbacks y pingbacks

  1. […] Mauro Bernal en Ultimo dia del Mes con SQL Server y otros […]

Dejar un comentario

¿Quieres unirte a la conversación?
Siéntete libre de contribuir!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.