SQL Server DATEDIFF ile İki tarih arasını bulmak

Bu yazımızda Microsoft SQL Server'da iki tarih arası farkı DATEDIFF() fonksiyonu ile bulacağız. Bunun için önce personel tablomuza (tblpersonel) Doğum Tarihi alanını kaydedeceğimiz DOGUMTARIHI alanı ekliyoruz, tipi de DATE yani tarih tipinde olacak. Amerikan tarih sistemine göre YIL-AY-GÜN formatında kayıt yapılıyor. MySQL ve SQL Server'da ve aşağı yukarı tüm veritabanlarında aynı format geçerlidir. Türkiye'de kullanılan ise Avrupa tarih formatıdır, formatı GÜN.AY.YIL şeklindedir.

DATEDIFF() fonksiyonu şöyle kullanılmaktadır. Örneğin iki tarih arasındaki yılı hesaplamak istersek;

DATEDIFF(Year, BaşlangıçTarihi, Bitiş Tarihi)

Önce SELECT deyimi ile personelin ADI, SOYADI ve DOĞUM TARİHİ alanlarını listeleyelim. Bunun için aşağıdaki SQL cümleciğini yazıyoruz.

SELECT ADI, SOYADI, DOGUMTARIHI FROM tblpersonel


SELECT 
ADI, SOYADI,
DATEDIFF(year,DOGUMTARIHI,'2018-10-22') 
FROM tblpersonel




Şimdi de veritabanımızdaki DOGUMTARIHI alanına bakarak yaşı 18'den büyük ve eşit olan tüm personeli listelemek isteyelim.

SELECT 
ADI, SOYADI,
DATEDIFF(year,DOGUMTARIHI,'2018-10-22')
AS YAS
FROM tblpersonel 
WHERE DATEDIFF(year,DOGUMTARIHI,'2018-10-22')>=18

Çok karışık görünmesine rağmen aslında burada yaptığımız DATEDIFF satırısını WHERE ifadesinden sonra yazıp >=18 eklemekten ibaret. 
 




Şimdi de yaşı 20 ve 40 arasındaki tüm personeli listelemek isteyelim, 20 ve 40 yaşları da dahil olsun.

SELECT 
ADI, SOYADI,
DATEDIFF(year,DOGUMTARIHI,'2018-10-22')
AS YAS
FROM tblpersonel 
WHERE DATEDIFF(year,DOGUMTARIHI,'2018-10-22')>=20
AND DATEDIFF(year,DOGUMTARIHI,'2018-10-22')<=40

Çok karışık görünmesine rağmen burada yaptığımız aslında DATEDIFF satırını WHERE  X>=20 AND X<=40 gibi X yerine koymaktan ibaret. 




DATEDIFF() fonksiyonu gördüğünüz gibi çok ihtiyaç duyacağımız mutlaka öğrenilmesi gereken tarih fonkisyonlarından biridir, ilerleyen zamanlarda başka tarih fonksiyonlarına da değineceğiz. Örneğin DATEADD fonksiyonu da çok kullanılmaktadır, bu fonksiyonunun kullanımını da araştırabilirsiniz. 

MySQL'de Veritabanı ve Tablo Oluşturma
MySQL Veritabanında Parametreli Stored Procedure oluşturma
MySQL Veritabanında Parametresiz Stored Procedure Oluşturma

Mutlu Kodlamalar
Oğuzhan TAŞ
Ekim, 2018 

Bookmark and Share
Dil Değiştir(Change Language)