Merhaba arkadaşlar,
Bu yazımda Sql Server 2008 de bulunan Date ve Time veri tiplerini, farklılıklarını ve bazı datetime fonksiyonlarını inceleyeceğiz.
Sql server 2008 ile birlikte Date,Time,DateTime2 gibi yeni veri tipleri gelmekte. Sql Server da bulunan tüm date ve time veri tiplerini görüntülemek için aşağıdaki sql i çalıştırılalım.
select * from sys.systypes where name like '%date%' or name like '%time%'
Bu veri tiplerini kısaca anlatacak olursak;
Date=Tarih tipinden veri saklamaya yarar.01-01-0001 ile 31-12-9999 arasında herhangi bir değeri alabilir.
Time=Saat türünden veri saklamaya yarar. Nano saniye bölümü 7 digitten oluşmaktadır. Burada ek bir bilgi vermem gerekirse; tablo oluştururken time tipinden bir veri tipi seçip nano saniye kısmı için digit ayarlaması yapabilmekteyiz. Time(7) tanımlamasındaki 7 rakamı bize hassasiyeti vermekte. Biz bunu sql server 2000 de olduğu gibi 3 yapabilmekteyiz.
DateTime=Tarih ve saat tipinden veri saklamaya yarar. 01-01-1753 ile 31-12-9999 arasında bir değer alabilir. Aynı zamanda nanosaniye olarak 3 digit i desteklemektedir.
DateTime2= DateTime veri tipinin aynısıdır. Farkı range olarak 01-01-0001 , 31-12-9999 aralığını desteklemesidir. Bir diğer farkıda nanosaniye olarak 7 digit i desteklemektedir.
SmallDateTime = DateTime veri tipinin daha az kapsamlı halidir. Nano saniye bilgisi içermez ve range olarak 01-01-1900 ile 06-06-2079 aralığını destekler.
DateTimeOffSet = İçerisinde UTC bilgisi de olan Tarih-Saat veri tipidir. Örneğin Select SYSDATETIMEOFFSET() sorgusunu çalıştırırsak UTC bilgisi içeren şu sonucu alırız. 2009-08-10 16:26:53.7895439 +03:00
Veri tiplerini karşılaştırmalı olarak şu tablodan inceleyebilirsiniz;
Date – Time Fonksiyonları
Sql server 2008 öncesinde date time değerlerini almak için 2 tane fonksiyon vardı. Bunlar GETDATE ve GETUTCDATE fonksiyonları. Sql server 2008 ile beraber 3 yeni fonksiyon daha gelmekte. Bunlar SYSDATETIME, SYSUTCDATETIME ve SYSDATETIMEOFFSET fonksiyonları. Bu fonksiyonlardan SYSDATETIME ve SYSUTCDATETIME, GETDATE ve GETUTCDATE fonksiyonlarının yaptığı işin aynısını yapmakta. Tek farkları nanosaniye kısmındaki 7 digiti destekler yapıları. SYSDATETIMEOFFSET ise bize tarih-saat bilgisinin yanında UTC zaman farkınıda vermekte.
Bu 5 fonksiyon arasındaki farkları görmek için aşağıdaki sorguyu çalıştırabilirsiniz.
select GETDATE(), GETUTCDATE(), SYSDATETIME(), SYSDATETIME(), SYSDATETIMEOFFSET(), SYSUTCDATETIME()
Bir diğer SQL Server 2008 yeniliği olarak datepart fonksiyonuna TZoffset parametresi gelmekte. Biliyorsunuz datepart fonksiyonu ile bir datetime değişkeninin istediğimiz parçasını alabilmekteyiz. TZoffset parametresi ise verilen datetime değişkeninin UTC zaman farkı değerini dakika olarak vermekte. Örneğin Türkiye için konuşursak
select datepart(TZoffset,sysdatetimeoffset())
sorgusu bize 180 değerini verecektir.
Bir diğer fonksiyon ise SWITCHOFFSET fonksiyonu. Bu fonksiyon ile de bir datetime değerinin UTC değerini değiştirebilmekteyiz.
cd53fad0-5856-4ff8-8057-f49e83d6dcaf|0|.0