Para trabalhar com a conversão de dados é necessário que os tipos de dados sejam compatíveis entre si, como por exemplo, o numero 1 pode ser representado como smallint ou como bigint.
Cast é uma função do padrão ANSI e Convert é uma função do engine do SQL Server. Convert pode ser utilizado para formatação de valores do tipo datetime e money.
Sintaxe
Cast – CAST (expression AS data_type [ (length ) ] )
Convert – CONVERT (data_type [ (length ) ] ,expression [ ,style ] )
Conversão implícita – O engine do Sql Server realiza a conversão de forma automática sem especificar a função Cast ou Convert.
DECLARE @Num1 AS INT = 10000000,@Num2 AS TINYINT=3
–O SQL Server realizou a conversão automaticamente, o tinyint inicia do 0 ate 255
SELECT @Num1+@Num2

Conversão explicita – É necessário especificar a função Cast ou Convert.
SELECT GETDATE() AS ‘Valor sem converter’
SELECT CAST(GETDATE() AS TIME) as ‘CAST’
SELECT CONVERT(TIME, GETDATE()) as ‘CONVERT’

A imagem abaixo mostra todas as conversões de tipos de dados explícitas e implícitas que são permitidas para tipos de dados fornecidos pelo sistema SQL Server

Estilos de data e hora
O Convert também pode ser utilizado para formatar dados do tipo datetime e money, nesse caso é necessário especificar a formatação desejada.
SELECT CONVERT( VARCHAR, GETDATE(),111) as ‘111’
SELECT CONVERT( VARCHAR, GETDATE(),113) as ‘113’
SELECT CONVERT( VARCHAR, GETDATE(),108) as ‘108’

Lista de estilos disponíveis para campos do tipo datetime.

Saiba mais
CAST e CONVERT (Transact-SQL)
[]’s
Andressa Martins