Mengira Bilangan Bulan Penuh Antara Dua Tarikh Menggunakan Fungsi Pelayan SQL
Mengira bilangan bulan penuh antara dua tarikh boleh menjadi cabaran dalam SQL Server. Pendekatan mudah menggunakan DATEDIFF mungkin tidak memberikan hasil yang tepat, kerana ia hanya mempertimbangkan perbezaan dalam bahagian bulan. Berikut ialah penyelesaian yang dipertingkat menggunakan UDF tersuai (Fungsi Ditentukan Pengguna) bernama 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
UDF ini mengambil dua parameter masa tarikh, @DateA dan @DateB, dan mengira bilangan bulan penuh antara keduanya. Ia mengendalikan kes di mana tarikh kedua lebih awal daripada yang pertama. Begini cara menggunakan 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
UDF mengira dengan tepat bilangan bulan penuh antara tarikh yang diberikan, memastikan hari dalam bulan itu diambil kira.
Atas ialah kandungan terperinci Bagaimana Mengira Dengan Tepat Bilangan Bulan Penuh Antara Dua Tarikh dalam Pelayan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!