Calcul du nombre de mois complets entre deux dates à l'aide d'une fonction SQL Server
Calcul du nombre de mois complets entre deux dates peut être un défi dans SQL Server. Une approche simple utilisant DATEDIFF pourrait ne pas fournir de résultats précis, car elle ne prend en compte que la différence entre les parties du mois. Voici une solution améliorée utilisant un UDF (fonction définie par l'utilisateur) personnalisé nommé FullMonthsSeparation :
CREATE FUNCTION FullMonthsSeparation ( @DateA DATETIME, @DateB DATETIME ) RETURNS INT AS BEGIN DECLARE @Result INT DECLARE @DateX DATETIME DECLARE @DateY DATETIME IF(@DateA < @DateB) BEGIN SET @DateX = @DateA SET @DateY = @DateB END ELSE BEGIN SET @DateX = @DateB SET @DateY = @DateA END SET @Result = ( SELECT CASE WHEN DATEPART(DAY, @DateX) > DATEPART(DAY, @DateY) THEN DATEDIFF(MONTH, @DateX, @DateY) - 1 ELSE DATEDIFF(MONTH, @DateX, @DateY) END ) RETURN @Result END GO
Cet UDF prend deux paramètres datetime, @DateA et @DateB, et calcule le nombre de mois complets entre eux. Il gère le cas où la deuxième date est antérieure à la première. Voici comment utiliser l'UDF :
SELECT dbo.FullMonthsSeparation('2009-04-16', '2009-05-15') as MonthSep -- =0 SELECT dbo.FullMonthsSeparation('2009-04-16', '2009-05-16') as MonthSep -- =1 SELECT dbo.FullMonthsSeparation('2009-04-16', '2009-06-16') as MonthSep -- =2
L'UDF calcule avec précision le nombre de mois complets entre les dates données, garantissant que le jour du mois est pris en compte.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!