SQL Server’da İki Tarih Arasındaki Yıl, Ay ve Gün Farkını Gösteren Fonksiyon
Herkese merhaba,
Bu yazıda SQL Server’da iki tarih arasındaki yıl, ay ve gün farkını gösteren fonksiyon hakkında bilgi vereceğim.
SQL Server’da bazı durumlarda iki tarih arasındaki yıl, ay ve gün farkını göstermek isteyebiliriz.
Aşağıdaki fonksiyon yardımıyla bu işlemi rahatlıkla yapabilirsiniz.
CREATE FUNCTION YılAyveGunFarkiGosterenFonksiyon
(
@BaslangicTarihi SMALLDATETIME,
@BitisTarihi SMALLDATETIME
)
RETURNS VARCHAR(50)
AS
BEGIN
DECLARE @TempTarih SMALLDATETIME;
DECLARE @Ay INT,
@Yil INT,
@Gun INT;
IF @BaslangicTarihi > @BitisTarihi
BEGIN
SET @TempTarih = @BitisTarihi;
SET @BitisTarihi = @BaslangicTarihi;
SET @BaslangicTarihi = @TempTarih;
END;
SELECT @Ay = DATEDIFF(MONTH, @BaslangicTarihi, @BitisTarihi);
IF DATEADD(MONTH, @Ay, @BaslangicTarihi) > @BitisTarihi
BEGIN
SET @Ay = @Ay - 1;
END;
SET @Gun = DATEDIFF(DAY, DATEADD(MONTH, @Ay, @BaslangicTarihi), @BitisTarihi);
SET @Yil = @Ay / 12;
SET @Ay = @Ay % 12;
RETURN (CASE
WHEN @Yil = 0 THEN
''
WHEN @Yil = 1 THEN
CONVERT(VARCHAR(50), @Yil) + ' Yıl '
WHEN @Yil > 1 THEN
CONVERT(VARCHAR(50), @Yil) + ' Yıl '
END
) + (CASE
WHEN @Ay = 0 THEN
''
WHEN @Ay = 1 THEN
CONVERT(VARCHAR(50), @Ay) + ' Ay '
WHEN @Ay > 1 THEN
CONVERT(VARCHAR(50), @Ay) + ' Ay '
END
) + (CASE
WHEN @Gun = 0 THEN
''
WHEN @Gun = 1 THEN
CONVERT(VARCHAR(50), @Gun) + ' Gün '
WHEN @Gun > 1 THEN
CONVERT(VARCHAR(50), @Gun) + ' Gün '
END
);
END;
--Kullanımı
SELECT dbo.YılAyveGunFarkiGosterenFonksiyon('2020-01-01',GETDATE()) AS Tarih
Fonksiyonu oluşturup çalıştırdığınızda aşağıdaki gibi bir sonuç göreceksiniz.
Görüldüğü üzere iki tarih arasındaki yıl, ay ve gün farkı gösterilmiş oldu.
Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.