Uygulamalarınızda iki tarih arasındaki değerleri A Yıl, B Ay, C Gün şeklinde gösterme gereği duyarız. Yaptığımız küçük bir uygulama ile bu gösterimi sağlamış olacağız.


Veritabanı işlemleri yaparken tarih verilerinin daha güzel bir gösterimi için bazı method yada fonksiyonlara ihtiyaç duyarız. Kısaca o fonksiyonu sizlere aktaralım. Fonksiyonumuz iki tane tarih verisi istemektedir. Verilen iki tarihi işledikten sonra gösterim olarak örneğin '2 Yıl 7 Ay 16 Gün' olarak bize geridönüş sağlamaktadır.

Tarih Fonksiyonu
CREATE FUNCTION dbo.fnYilAyGun
(
@BaslangicTarihi DATETIME,
@BitisTarihi DATETIME
)
RETURNS varchar(100)
AS
BEGIN
DECLARE @Yil INT
DECLARE @Ay INT
DECLARE @Gun INT
DECLARE @Sonuc VARCHAR(100)
SET @Yil = DATEDIFF(yy, @BaslangicTarihi, @BitisTarihi)
SET @Ay = DATEDIFF(mm, @BaslangicTarihi, @BitisTarihi) - (@Yil * 12)
SET @Gun = DATEDIFF(dd, @BaslangicTarihi, @BitisTarihi) - ((@Yil * 365) + (@Ay * 30))
IF (@Yil < 1)
BEGIN
SET @Yil = ''
END
IF (@Ay < 1)
BEGIN
SET @Ay = ''
END
IF (@Gun < 1)
BEGIN
SET @Gun = ''
END
SET @Sonuc = (' ' + CAST(@Yil AS VARCHAR(4)) + ' Yıl ' + CAST(@Ay AS VARCHAR(2)) + ' Ay ' + CAST(@Gun AS VARCHAR(2)) + ' Gün')
SET @Sonuc = REPLACE(@Sonuc, ' 0 Yıl', '')
SET @Sonuc = REPLACE(@Sonuc, ' 0 Ay', '')
SET @Sonuc = REPLACE(@Sonuc, ' 0 Gün', '')
RETURN @Sonuc
END


Fonksiyonumuzu yazdık, şimdi ise bunu SQL Server üzerinde oluştuğunu teyit edelim.

Oluşan Fonksiyon



Örnek 1

SELECT dbo.fnYilAyGun('2012-01-02', '2020-03-10') AS TarihFarki


Örnek 1 Sonuç



Örnek 2

SELECT dbo.fnYilAyGun('2018-04-20', '2018-05-28') AS TarihFarki


Örnek 2 Sonuç



Bol sorgulu günler

Kaynak: https://www.ontedi.com/sql/sql-serverda-yil-ay-ve-gun-farki-gosterimi