folder Tahribat.com Forumları
linefolder Database - Veritabanı
linefolder SQL Server'da Yıl, Ay Ve Gün Farkı Gösterimi



SQL Server'da Yıl, Ay Ve Gün Farkı Gösterimi

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    camarade
    ontedi
    ontedi's avatar
    Kayıt Tarihi: 04/Eylül/2005
    Erkek

    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 Çıktı

     

    Örnek 2

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


    Örnek 2 Çıktı

     

    Bol örnekli günler.

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

     

    ontedi tarafından 03/Nis/20 10:21 tarihinde düzenlenmiştir

    Matematikçi ve Yazılımcı. http://www.ontedi.com ve http://www.cizgi.site Siteme beklerim herkesi.