Sql Server 2008 de Cast & Convert

Dark-Man

Kıdemli Üye
5 Ocak 2013
4,430
9
I Don't Know
Cast ve Convert ifadeleri veri tiplerini ve stillerini değiştirmemize olanak sağlarlar.
Aslına bakarsanız ikisinin de görevi aynıdır.Ancak,CONVERT deyimi ilgili değerin stilini de değiştirir...

örnek vermem gerekirse;

"4000 YTL" değerini para birimi olarak yazmak istersek 4.000 YTL dememiz gerekir. Yada 2008 yılını çift haneliye çevirirken "08" yazarız. işte bu gibi durumlarda CONVERT deyimini kullanırız...

Bir örnek yapalım isterseniz.
Daha iyi anlayacağınıza eminim:

Declare @zaman as DateTime;
set @zaman='01/04/1985';
Select @zaman;


kod cümleciğini çalıştırdığımız anda ekrana @zaman parametremize verdiğimiz 1 Nisan 1985 tarihini DateTime biçiminde yazacak ve böyle bir sonuç ortaya çıkacaktır:

1985-01-04 00:00:00.000

Bu bizim istediğimiz bir sonuç değildir.Dolayısıyla bunu uygun bir formatlama biçimine dönüştürmemiz gerekir.Gelin bunu Cast ile nasıl yaparız öğrenelim...

İlgili Select cümleciğimizi bu şekilde yazarsak eğer:

Select CAST(@zaman as nvarchar(50));

Aşağıdaki gibi bir sonuç elde edeceğimize hiç şüphe yoktur:

Jan 4 1985 12:00AM

İşte bu bizim tamda istediğimiz bir biçimdir.Bu ifade yapısı,yani "Cast" deyimi Sql Server 2005'de de çalışmaktadır...

Ve bunun tam tersini yapmak istersek de;

Select CAST('Jan 4 1985 12:00AM' as DateTime);

Kod Cümleciğini çalıştırmamız yeterli olacaktır...

Şimdi gelelim Convert Deyimi ile bunları nasıl yapacağımıza...

Convert ifadesinin kullanım şekli:

Convert(veritipi,değer,stil);

şeklindedir...

Örnek yapalım hemen...

Select Convert(DATETIME,'Jan 4 1985 12:00AM');

ifadesi aşağıdaki sonucu döndürecektir:

1985-01-04 00:00:00.000

yani yukarıda yaptığımız CAST ifadesiyle aynı görevi yapıyor...

Convert ifadesinde Stil özelliğini hiç kullanmadık.Gelin onu da birkaç örnekte yapalım.

Stil değeri çıktı ifadesini adı üstünde stil vermeye zorlar.Stil değeri nümerik bir alandır ve 0 dan 7 ye kadar olan tüm sayı değerlerini kabul eder(0 değeri aslında buna dahil değildir.0 değerini etkisiz eleman olarak algılayabilirsiniz...)

Örnek vermem gerekirse;

Declare @zaman as DateTime;
set @zaman='01/04/1985';
Select Convert(nvarchar(50),@zaman,0);

değeri bize,

Jan 4 1985 12:00AM

çıktısını verecektir.

Tüm parametrelerin çıktısı aşağıda verilmiştir...


Select Convert(nvarchar(50),@zaman,1); ----->>>> 01/04/85
Select Convert(nvarchar(50),@zaman,2); ----->>>> 85.01.04
Select Convert(nvarchar(50),@zaman,3); ----->>>> 04/01/85
Select Convert(nvarchar(50),@zaman,4); ----->>>> 04.01.85
Select Convert(nvarchar(50),@zaman,5); ----->>>> 04-01-85
Select Convert(nvarchar(50),@zaman,6); ----->>>> 04 Jan 85
Select Convert(nvarchar(50),@zaman,7); ----->>>> Jan 04, 85

gibi çıktılar alacaksınızdır...
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.