SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		Pribadi Pamungkas
-- Create date: 2014-03-26
-- Description:	Membandingkan 2 tanggal dengan perhitungan tanggal ketemu tanggal
-- =============================================
CREATE FUNCTION [dbo].[func_tgl_ketemu_tanggal](
	@pi_tgl_mulai datetime,
	@pi_tgl_akhir datetime
)
RETURNS int
AS
BEGIN
	DECLARE @hasil INT,
	        @bulantahun_beda INT,
	        @tgl_awal INT,
	        @tgl_akhir INT
	
	SET @hasil=0

	SELECT @bulantahun_beda=DATEDIFF(month, @pi_tgl_mulai, @pi_tgl_akhir)
	
	SELECT @tgl_awal=DATEPART(day, @pi_tgl_mulai)
	SELECT @tgl_akhir=DATEPART(day, @pi_tgl_akhir)
	
	IF @bulantahun_beda<1   -- jika dalam masih bulan dan tahun yang sama
	  BEGIN
	    IF @tgl_akhir>@tgl_awal -- jika tanggalnya lebih besar, maka dihitung 1 bulan
	      BEGIN
	        SET @hasil = 1
	      END
	    ELSE
	      BEGIN
	        SET @hasil = 0
	      END
	  END
	ELSE                    -- jika beda bulan, gunakan pembanding bulan
	  BEGIN
	    IF @tgl_akhir>@tgl_awal -- lalu bandingkan tanggalnya
	      BEGIN
	        SET @hasil = @bulantahun_beda + 1
	      END
	    ELSE
	      BEGIN
	        SET @hasil = @bulantahun_beda
	      END
	  END

	RETURN @hasil

END
GO

