SQL Server’da Doğru Yaş Hesabı Yapmak
Projenizde veya sizden talep edilen bir raporu hazırlarken bağzen yaş hesabı yapılması ihtiyacı duyuluyor. SQL Server‘da yaş hesabı yapılırken aşağıdaki gibi bir sorgu ile şimdiki tarihten kullanıcının doğum tarihini çıkartıp aradaki farkı yıl olarak veriyoruz. Dikkat edilmediği taktirde bu kullanım şekli yaş hesabının yanlış yapılmasına sebep olabiliyor. Örnek üzerinden devam edecek olursak;
[sql]
DECLARE @BirthDate datetime=’2000-12-31′
SELECT DATEDIFF(YEAR,@BirthDate,GETDATE()) AS Age
[/sql]
Yaş hesabı yapmış olduğumuz doğum tarihi “31/12/2000” benim bu sorguyu çalıştırdığım tarihi “03/02/2015” aradaki yıl farkı bize “15” olarak dönüyor. Yaş hesabı yaptığımız tarihe henüz yaklaşmamış olmamıza rağmen +1 yıl fazla bir yaş değeri veriyor. Doğru yaş hesabını yapmak için sorgumuzu aşağıdaki gibi kullanmamız gerektiğini anlıyoruz.
[sql]
DECLARE @BirthDate datetime=’2000-12-31′
SELECT DATEDIFF(YEAR,@BirthDate,GETDATE()) -CASE WHEN DATEADD(YY,DATEDIFF(YEAR,@BirthDate,GETDATE()),@BirthDate)>GETDATE() THEN 1 ELSE 0 END AS AGE
[/sql]
Result ekranında da görüldüğü gibi doğru yaş hesabı yapmış oldu ve doğru olan “14” değerine ulaştık. Hesabımıza basit bir Case When yapısı ekleyerek gelen doğum tarihi bilgisinin gün ve ay olarakta şimdiki tarihten büyük olup olmadığını kontrol ettik. Eğer doğum tarihi bilgisi hesaplanma tarihinden küçükse, hesaplanan yaş değerinde “-1” değerini değilse “0” değerini çıkartıp doğru sonucu üretmiş olduk.
Sizinde bu konu hakkında farklı bir hesaplama yapınız varsa, yorum panelinden paylaşmanızı isterim.
Faydalı olması dileğiyle.