SQL Server 2016 – DATEDIFF_BIG Fonksiyonu

SQL Server 2016 ile birlikte gelen yeni fonksiyonlardan birisi de DATEDIFF_BIG fonksiyonudur. İki tarih arasındaki farkı bigint türünde geriye döndürür. DATEDIFF fonksiyonu geriye int türünde değer döndüğünden dolayı int türünden daha büyük değerlere ihtiyaç olması durumunda kullanılması için DATEDIFF_BIG fonksiyonu kullanıma sunulmuştur.

DATEDIFF_BIG Syntax : DATEDIFF_BIG( datepart,startdate,enddate )

Kullanımı :

[sql]

SELECT DATEDIFF_BIG(DAY,GETDATE(),GETDATE()+10) 

[/sql]

datediff_big_example

Bu örnekte DATEDIFF ile DATEDIFF_BIG arasındaki farkı daha iyi anlamak için INT (max=2,147,483,647) veri türünün sınırını geçebilecek bir tarih farkı alalım.

[sql]

SELECT DATEDIFF(ms,’2016-01-01′,’2016-01-31′)

[/sql]

datediff_overflow

DATEDIFF bize INT (max=2,147,483,647) veri türü döndürdüğü için ve farkını almak istediğimiz zaman bilgisi INT veritürü sınırını geçtiği için overflow hatası meydana geldi.

Şimdi de aynı sorguyu DATEDIFF_BIG fonksiyonu ile çalıştıralım;

[sql]

SELECT DATEDIFF_BIG(ms,’2016-01-01′,’2016-01-31′)

[/sql]

datediff_big_example_two

Sorgu sonucunda da görüldüğü üzere 1 aylık milisaniye bazındaki tarih farkını DATEDIFF_BIG fonksiyonu ile başarıyla almış olduk.

INT türünde dönüş yapan DATEDIFF fonksiyonu yetersiz kaldığı durumda BIGINT veri türünde dönüş yapan DATEDIFF_BIG fonksiyonunu SQL Server 2016 versiyonu ile bilikte rahatça kullanabilirsiniz.

Genel Bilgi: 

INT veri türü sınırları : -2,147,483,648 ile +2,147,483,647 arasındadır.

BIGINT veri türü sınırları: -9,223,372,036,854,775,808 ile 9,223,372,036,854,775,807 arasındadır.

Not: Bu içerikte kullanılan SQL Server sürümü :  SQL Server 2016 CTP 3

Mesut Güneş

Selçuk Üniversitesi Bilgisayar programcılığı bölümünden mezun olduktan sonra birçok firmada Yazılım, İş zekası ve Veritabanı Uzmanı olarak çalıştım. Şuan Türkiye’nin en büyük şirketlerinden biri olan Doğan Online’da Veritabanı Yöneticisi olarak çalışıyorum.

You may also like...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.