SQL ile Kıdem Yılı Hesaplama
7.214 defa okundu
Konu: İnsan Kaynakları
İçindekiler
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ı
SQL
- 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.
SQL
- SELECT [dbo].[FN_KIDEM]('2010-06-21',GETDATE())
Teşekkürler, geri bildiriminiz alındı.
Bu konuda hesaplama aracı: Kıdem ve İhbar Tazminatı · Maaş Hesapla · Yıllık İzin Formu
Bu konuda hesaplama aracı: Kıdem ve İhbar Tazminatı · Maaş Hesapla · Yıllık İzin Formu