SQL Server 2012 Format Fonksiyonu
SQL Server üzerinde çalışan hemen hemen herkes verilerin formatlarını değiştirme ihtiyacı duyar. Örneğin Türkiye’de tarih verileriyle çalışırken SQL Server’ın bize verdiği formattan farklı olarak yıl,ay,gün formatında değil de ay,gün,yıl gibi bir formata verileri dönüştürme ihtiyacı duyarız. Bu gibi durumlarda Convert fonksiyonunu bizim işimizi görecektir. Bildiğiniz gibi Convert fonksiyonunu format parametresini kullanırken bir tane nümerik format numarası gelirtmemiz gerekir. Örneğin aşağıdaki gibi bir dönüşüm ile tarih verisini varsayılandan farklı olarak gün,ay,yıl şekline dönüştürebiliriz.

Yukarıdaki örnekte gördüğümüz gibi tarih verisini istediğimiz formata dönüştürmek için Convert fonksiyonunu format numarası parametresi ile beraber kullandık. Fakat bu format numaralarını ezberlemek hem oldukça uzun hem de çok kolay unutulabiliyor. Bu nedenle SQL Server 2012 ile beraber bütünleşik bir formatlama fonksiyonu tanıtıldı. Format adlı bu fonksiyonun hem convert fonksiyonundan daha kolay kullanılıyor hem de sadece tarih değil diğer veri tipleri ile ilgili de formatlama işlemi yapabiliyor.
Format fonksiyonun kullanımının Convert fonksiyonuna göre daha basit ve akılda kalıcı olma sebebi ise dönüş yapmak istediğimiz format numerik bir sayı ile değil, ilgili formatı temsil eden karakter ifadeyle belirtiliyor. Format fonksiyonun kullanımı aşağıdaki gibidir.
FORMAT ( value,format)
Format fonksiyonun kullanımı her ne kadar yukarıdaki gibi olsa bile format kısmında herhangi bir bölge seçeneği(culture) ekleyebiliriz. Şimdi format fonksiyonunun nasıl kullanılabileceği hakkında birkaç örnek yapalım.
DECLARE @DATE DATETIME = GETDATE()
SELECT 'dd/MM/yyyy'=FORMAT(@DATE, 'dd/MM/yyyy') ,
'dd.MM.yy'=FORMAT(@DATE, 'dd.MM.yyy') ,
'dd/MMM/yy'=FORMAT(@DATE, 'dd/MMM/yyy') ,
'hh:mm:ss'=FORMAT(@DATE, 'hh:mm:ss')
Yukarıda gördüğümüz gibi Format fonksiyonunu kullanırken formatlayacağımız tarih bilgisiyle beraber istediğimiz formatı da metinsel bir ifade olarak belirtiyoruz. Yukarıdaki sorgumuzun çıktısı aşağıdaki gibi olacaktır.

Format foksiyonu ile ilgili olarak sadece tarih verileri üzerinde değil diğer veri türlerinde de formatlama yapabiliyor demiştik. Şimdi numerik bir değer üzerinde format fonksiyonunu nasıl kullanabileceğimize bakalım.
DECLARE @NUMERIKDEGER int = 26
SELECT 'Currency'=FORMAT(@NUMERIKDEGER,'c'),
'Percent'= FORMAT(@NUMERIKDEGER,'p') ,
'Hexa Decimal'=FORMAT(@NUMERIKDEGER,'x')
Yukarıdaki sorgumuzda ise format fonksiyonumuzu numerik bir değer ile kullandık. Numerik değerlerde format olarak c kullandığımızda değerin para birimi yani Curreny olduğunu, p kullandığımız yüzdelik ifade edileceğimi, x kullandığımızda ise parametre verdiğimiz değerin on altılık sistemdeki hexa decimal karşılığını bize verecektir. Diğer parametreler için Msdn’den yardım alabilirsiniz. Sorgumuzun sonucu aşağıdaki gibi olacaktır.