SQL ile Kıdem Yılı Hesaplama

SQL ile Kıdem Yılı Hesaplama

SQL ile işe başlama ve bitiş tarihlerine göre verilen iki tarih arasındaki kıdem süresini yıl, ay, gün olarak hesaplanması için aşağıdaki gibi bir scalar fonksiyon yazmak gerekebilir.

Söz konusu scalar fonksiyon verilen iki tarih arasındaki farkı gün, ay ve yıl olarak bulmakta ve string değer olarak sonuç döndürmektedir.

Birinci tarih işe giriş tarihi, ikinci tarih bugünün tarihi veya işten ayrılma tarihidir. İkinci tarih birinci tarihten büyük olamaz.

Kıdem Süresi Fonksiyonunun Oluşturulması

ALTER FUNCTION [dbo].[FN_KIDEM] (@Tarih1 DATETIME,@Tarih2 DATETIME)
RETURNS CHAR(50)
AS
BEGIN
DECLARE @Gun AS INT,@Ay AS INT,@Yil AS INT,@GunAl AS INT,@AyAl AS INT,@Sonuc CHAR(100)
IF @Tarih2>=@Tarih1
BEGIN
IF DAY(@Tarih2)>=DAY(@Tarih1)
BEGIN
SET @Gun=DAY(@Tarih2)-DAY(@Tarih1)
END
ELSE
BEGIN
SET @Gun=(DAY(@Tarih2)+30)-DAY(@Tarih1)
SET @GunAl=1
END

IF (MONTH(@Tarih2)-ISNULL(@GunAl,0))>=MONTH(@Tarih1)
BEGIN
SET @Ay=MONTH(@Tarih2)-MONTH(@Tarih1)
END
ELSE
BEGIN
SET @Ay=(MONTH(@Tarih2)+12)-(MONTH(@Tarih1)+ISNULL(@GunAl,0))
SET @AyAl=1
END

IF (YEAR(@Tarih2)-ISNULL(@AyAl,0))>=YEAR(@Tarih1)
BEGIN
SET @Yil=YEAR(@Tarih2)-(YEAR(@Tarih1)+ISNULL(@AyAl,0))
END
ELSE
BEGIN
SET @Yil=YEAR(@Tarih2)-YEAR(@Tarih1)
END
SET @Sonuc=RTRIM(CONVERT(CHAR(3),@Yil))+' Yıl ' + LTRIM(CONVERT(CHAR(2),@Ay))+' Ay '+ RTRIM(CONVERT(CHAR(2),@Gun)) +' Gün '

END
ELSE
BEGIN
SET @Sonuc='Bitiş Tarihi Başlangıç Tarihinden Büyük'
END
RETURN @Sonuc
END
GO

--Fonksiyonun Kullanılması
SELECT [dbo].[FN_KIDEM]('2010-06-21','2017-04-05')

--Fonksiyon Sonucu

6 Yıl 9  Ay 14 Gün                                

veya bugünün tarihi yerine Getdate() fonksiyonu kullanılabilir.

SELECT [dbo].[FN_KIDEM]('2010-06-21',GETDATE())


İlgili Yazılar