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

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

Susan Sarandon
Libérer: 2025-01-05 04:32:41
original
346 Les gens l'ont consulté

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

Calcul de mois complets entre des dates en SQL

En SQL, la fonction DATEDIFF est couramment utilisée pour calculer la différence entre deux dates. Cependant, cette fonction renvoie la différence en mois et non le nombre de mois complets. Pour déterminer le nombre de mois complets entre deux dates, un calcul plus spécifique est nécessaire.

Approche UDF

Une approche consiste à créer une fonction définie par l'utilisateur (UDF ) qui calcule le nombre de mois complets entre deux dates. La fonction, nommée FullMonthsSeparation, s'écrit comme suit :

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

Exemple d'utilisation

Pour utiliser la fonction FullMonthsSeparation, appelez-la simplement avec les deux dates en paramètres. Par exemple :

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

Cette fonction renverra le nombre de mois complets entre les deux dates. Cela tient compte de la possibilité que la date de début puisse avoir un jour du mois plus grand que la date de fin, auquel cas un mois est soustrait du résultat.

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