Calcular el número de meses entre dos fechas en SQL – DATEDIFF()

Por 0 No tags Permalink

Se utiliza la función DATEDIFF() de SQL Server para calcular el número de años, meses, semanas, días, etc., entre dos fechas.

La función DATEDIFF () acepta tres argumentos: date_part, start_date y end_date.

DECLARE 
    @FechaHoraInicio DATETIME2= '2021-12-31 23:59:59.9999999', 
    @FechaHoraFin DATETIME2= '2021-01-01 00:00:00.0000000';

SELECT DATEDIFF(year, @FechaHoraInicio, @FechaHoraFin) diff_Años
   ,DATEDIFF(month, @FechaHoraInicio, @FechaHoraFin) diff_Mes
   ,DATEDIFF(dayofyear, @FechaHoraInicio, @FechaHoraFin) diff_DiasAño
   ,DATEDIFF(day, @FechaHoraInicio, @FechaHoraFin) diff_Dias
   ,DATEDIFF(week, @FechaHoraInicio, @FechaHoraFin) diff_Semanas
   ,DATEDIFF(hour, @FechaHoraInicio, @FechaHoraFin) diff_Horas
   ,DATEDIFF(minute, @FechaHoraInicio, @FechaHoraFin) diff_Minutos
   ,DATEDIFF(second, @FechaHoraInicio, @FechaHoraFin) diff_Segundos

Número de meses con decimales:

CREATE FUNCTION [dbo].[CalculoMesesDecimales](@FechaInicial datetime, @FechaFinal datetime)
RETURNS Decimal(10,2)
AS
BEGIN
	DECLARE @NumeroMeses Decimal(10,2) = 0
	SELECT @NumeroMeses = datediff(month, @FechaInicial, @FechaFinal) - 1 +
							  1-1.0*(day(@FechaInicial)-1)/ day(dateadd(m, datediff(m,-1, @FechaInicial), -1))
							  + 1.0*(day(@FechaFinal)-1)/ day(dateadd(m, datediff(m,-1, @FechaFinal), -1))
	RETURN @NumeroMeses
END

Esta función retorna el número de meses entre 2 fechas con decimales:

Compara el precio para envíos nacionales e internacionales con hasta un 70% de ahorro.

No Comments Yet.

Leave a Reply

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