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:
Leave a Reply