SQL Server’da CONVERT ve CAST operatörleri, bir veri türünü başka bir veri türüne dönüştürmek için kullanılır. Her ikisi de benzer işlev görür, ancak bazı farklılıkları vardır.
CAST ANSI SQL standardına uygundur ve bu nedenle diğer veri tabanı sistemlerinde de genellikle aynı şekilde çalışır.
CONVERT, SQL Server’a özgü bir fonksiyondur. Özellikle tarih-saat verilerini formatlama konusunda CAST’ten daha fazla kontrol sunar.
Genel dönüşümler için: CAST
Tarih-saat formatlama gerekiyorsa: CONVERT
CAST fonksiyonun örnek sözdizimi:
CAST(KOLON1 AS INT)
CONVERT fonksiyonun örnek sözdizimi:
CONVERT(NVARCHAR, KOLON1)
CAST dönüşüm işlemi ile ilgili genel örnekler aşağıdaki gibidir.
DECLARE @SONUC INT
DECLARE @SONUC2 DECIMAL(3,1)
DECLARE @TARIH VARCHAR(50)
-- String'i integer'a çevirme
SET @SONUC=CAST('2323' AS INT) ;
SELECT @SONUC*2
-- Float'ı decimal'a çevirme
SET @SONUC2 = CAST(12.345 AS DECIMAL(5,1)) ;
SELECT @SONUC2*2
-- Tarihi string'e çevirme
SET @TARIH=CAST(GETDATE() AS VARCHAR(20));
select @TARIH +'---'
Dönüşüm işlemlerinin sonucu aşağıdaki gibi görülmektedir.

CONVERT dönüşüm işlemi ile ilgili genel örnekler aşağıdaki gibidir.
-- String'i date'e çevirme (style parametresi ile)
SELECT CONVERT(DATETIME, '2023-12-31', 120) AS Tarih;
-- Float'ı string'e çevirme
SELECT CONVERT(VARCHAR(10), 12.345) AS Metin;
-- Tarihi farklı formatlarda gösterme
SELECT CONVERT(VARCHAR, GETDATE(), 101) AS 'ABD Formatı', -- mm/dd/yyyy
CONVERT(VARCHAR, GETDATE(), 103) AS 'İngiliz Formatı', -- dd/mm/yyyy
CONVERT(VARCHAR, GETDATE(), 105) AS 'İtalyanca', -- dd-mm-yy
CONVERT(VARCHAR, GETDATE(), 112) AS 'ISO Formatı'; --yyyymmdd
Diğer tarih formatlama biçimlerini ilgili makalede görebilirsiniz.

Farklı tip kolonları birleştirmek için aşağıdaki komutlar kullanılmaktadır.
SELECT[FirstName] + ' '+ [LastName] + ModifiedDate
FROM [AdventureWorks2017].[Person].[Person]
Kolon türleri farklı olduğu için aşağıdaki hata mesajıyla karşılaşırız.
Msg 241, Level 16, State 1, Line 1
Conversion failed when converting date and/or time from character string.
Tür dönüşüm operatörü olan convert ve cast işlemiyle İlgili tarih kolonuna tür dönüşümü yapalım.
SELECT[FirstName] + ' '+ [LastName] +'-----'+ cast(ModifiedDate as varchar) FROM [AdventureWorks2017].[Person].[Person]
SELECT[FirstName] + ' '+ [LastName] +'-----'+ convert(varchar,ModifiedDate) FROM [AdventureWorks2017].[Person].[Person]
SQL Server’da hata yönetimi için geliştirilmiş güvenli fonksiyonlar TRY_CAST ve TRY_CONVERT fonksiyonlarıdır.
Normal bir Cast işleminde aşağıdaki gibi işlem yapılırsa hata vermektedir.
SELECT CAST('ABC' AS INT);

Try_cast komutunu kullandığımızda Null değerin geldiğini görmekteyiz.

Aynı hata TRY_CONVERT komutu kullandığımızda da almayız. Bunun gibi sorgularımda hata almamak için aşağıdaki yapıda kullanılabilir.

TRY_CAST ve TRY_CONVERT dönüşüm hatalarını NULL
değere çevirerek sorgularınızın çökmemesini sağlar. Veri kalitesi düşük ortamlarda vazgeçilmez fonksiyonlardır.
Özellikle dış kaynaklardan gelen veya kullanıcı girdilerinin olduğu veritabanlarında hayat kurtarıcı bir fonksiyondur
Bu makalede CAST ve CONVERT fonksiyonlarını detaylı bir şekilde görmüş olduk. Başka makalede görüşmek dileğiyle..
“Ey inananlar! Sabır ve namazla yardım dileyin. Allah, muhakkak ki sabredenlerle beraberdir.” Bakara Suresi; 153. Ayet