← maurobernal.com.ar

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:

https://maurobernal.com.ar/blog/blog/t-sql/obtener-ultimo-dia-del-mes-sql-server/


Comentarios

9 respuestas a «Ultimo dia del Mes con SQL Server y otros»

  1. Avatar de Damián
    Damián

    gracias.
    me sirvió en el trabajo.

    un abrazo.
    Feliz Navidad y Año Nuevo.

    1. Avatar de Mauro Bernal

      Es la idea 🙂 …
      Muchas Gracias

  2. Avatar de Francisco Cruz
    Francisco Cruz

    Muchas gracias, me ahorró mucho tiempo.

  3. Avatar de Seba

    Gracias por el post!!! excelente… me sirvió muchísimo!!!

  4. Avatar de Mauro Bernal

    Para trabajar con cuatrimestre

    SELECT DATEADD(qq,DATEDIFF(qq,0,GETDATE()),0) as FirstDayOfQuarter

    SELECT DATEADD(qq,DATEDIFF(qq,-1,GETDATE()),-1) as LastDayOfQuarter

    1. Avatar de Rodrigo Cortes
      Rodrigo Cortes

      Buen aporte solo una duda, intente hacer lo del cuatrimestre pero en realidad muestra los tres meses posteriores.

  5. Avatar de Mauro Bernal

    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

  6. Avatar de Mauro Bernal

    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

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

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.