Rumah >pangkalan data >tutorial mysql >Bagaimana Mengira Dengan Tepat Bilangan Bulan Penuh Antara Dua Tarikh dalam 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!