Qual é a orientação geral sobre quando você deve usar CAST
versus CONVERT
? Existe algum problema de desempenho relacionado à escolha de um versus o outro? Há alguém mais próximo do ANSI-SQL?
fonte
Qual é a orientação geral sobre quando você deve usar CAST
versus CONVERT
? Existe algum problema de desempenho relacionado à escolha de um versus o outro? Há alguém mais próximo do ANSI-SQL?
CONVERT
é específico do SQL Server, CAST
é ANSI.
CONVERT
é mais flexível, pois você pode formatar datas etc. Além disso, elas são praticamente iguais. Se você não se importa com os recursos estendidos, use CAST
.
EDITAR:
Conforme observado por @beruic e @CF nos comentários abaixo, há uma possível perda de precisão quando uma conversão implícita é usada (que é onde você não usa nem CAST nem CONVERT). Para obter mais informações, consulte CAST e CONVERT e, em particular, este gráfico: Gráfico de conversão de tipos de dados do SQL Server . Com essas informações extras, o conselho original permanece o mesmo. Use CAST sempre que possível.
O Convert tem um parâmetro de estilo para a conversão de data em string.
http://msdn.microsoft.com/en-us/library/ms187928.aspx
fonte
CAST é SQL padrão, mas CONVERT é apenas para o dialeto T-SQL. Temos uma pequena vantagem para converter no caso de data e hora.
Com CAST, você indica a expressão e o tipo de destino; com CONVERT, existe um terceiro argumento que representa o estilo da conversão, suportado por algumas conversões, como entre cadeias de caracteres e valores de data e hora. Por exemplo, CONVERT (DATE, '1/2/2012', 101) converte a cadeia de caracteres literal em DATE usando o estilo 101 que representa o padrão dos Estados Unidos.
fonte
Para expandir a resposta acima copiada por Shakti , consegui medir uma diferença de desempenho entre as duas funções.
Eu estava testando o desempenho das variações da solução para essa pergunta e descobri que o desvio padrão e os tempos de execução máximos eram maiores ao usar
CAST
.* Vezes em milissegundos, arredondados para o 1/300 de segundo mais próximo, conforme a precisão do
DateTime
tipofonte
Algo que ninguém parece ter notado ainda é legibilidade. Tendo…
... pode ser mais fácil de entender do que ...
fonte
CAST(Column1 AS int)
é mais lógico para ler do queCONVERT(int, Column1)
mesmo para expressões longasO CAST usa o padrão ANSI. Em caso de portabilidade, isso funcionará em outras plataformas. CONVERT é específico para o servidor sql. Mas é uma função muito forte. Você pode especificar estilos diferentes para datas
fonte