Rumah >pangkalan data >tutorial mysql >Bagaimana Mengira Dengan Tepat Bilangan Bulan Penuh Antara Dua Tarikh dalam SQL?

Bagaimana Mengira Dengan Tepat Bilangan Bulan Penuh Antara Dua Tarikh dalam SQL?

Susan Sarandon
Susan Sarandonasal
2025-01-05 04:32:41344semak imbas

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

Mengira Bulan Penuh Antara Tarikh dalam SQL

Dalam SQL, fungsi DATEDIFF biasanya digunakan untuk mengira perbezaan antara dua tarikh. Walau bagaimanapun, fungsi ini mengembalikan perbezaan dalam bulan, bukan bilangan bulan penuh. Untuk menentukan bilangan bulan penuh antara dua tarikh, pengiraan yang lebih khusus diperlukan.

Pendekatan UDF

Satu pendekatan ialah mencipta Fungsi Ditentukan Pengguna (UDF ) yang mengira bilangan bulan penuh antara dua tarikh. Fungsi, bernama FullMonthsSeparation, ditulis seperti berikut:

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

Contoh Penggunaan

Untuk menggunakan fungsi FullMonthsSeparation, hanya panggilnya dengan dua tarikh sebagai parameter. Contohnya:

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

Fungsi ini akan mengembalikan bilangan bulan penuh antara dua tarikh. Ia mengambil kira kemungkinan bahawa tarikh mula mungkin mempunyai hari yang lebih besar dalam bulan daripada tarikh tamat, yang mana satu bulan ditolak daripada hasilnya.

Atas ialah kandungan terperinci Bagaimana Mengira Dengan Tepat Bilangan Bulan Penuh Antara Dua Tarikh dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn