Maison > base de données > tutoriel mysql > Comment calculer avec précision le nombre de mois complets entre deux dates dans SQL Server ?

Comment calculer avec précision le nombre de mois complets entre deux dates dans SQL Server ?

Mary-Kate Olsen
Libérer: 2025-01-03 04:18:39
original
366 Les gens l'ont consulté

How to Accurately Calculate the Number of Full Months Between Two Dates in SQL Server?

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
Copier après la connexion

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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal