¿Cuál es la guía general sobre cuándo debe usar CAST
versus CONVERT
? ¿Hay algún problema de rendimiento relacionado con elegir uno versus el otro? ¿Está uno más cerca de ANSI-SQL?
fuente
¿Cuál es la guía general sobre cuándo debe usar CAST
versus CONVERT
? ¿Hay algún problema de rendimiento relacionado con elegir uno versus el otro? ¿Está uno más cerca de ANSI-SQL?
CONVERT
es específico de SQL Server, CAST
es ANSI.
CONVERT
es más flexible ya que puedes formatear fechas, etc. Aparte de eso, son más o menos lo mismo. Si no te interesan las funciones ampliadas, úsalas CAST
.
EDITAR:
Como lo señalan @beruic y @CF en los comentarios a continuación, existe una posible pérdida de precisión cuando se usa una conversión implícita (es decir, donde no se usa CAST ni CONVERT). Para obtener más información, vea CAST y CONVERT y, en particular, este gráfico: Tabla de conversión de tipos de datos de SQL Server . Con esta información adicional, el consejo original sigue siendo el mismo. Use CAST donde sea posible.
Convertir tiene un parámetro de estilo para las conversiones de fecha a cadena.
http://msdn.microsoft.com/en-us/library/ms187928.aspx
fuente
CAST es SQL estándar, pero CONVERT es solo para el dialecto T-SQL. Tenemos una pequeña ventaja para convertir en el caso de datetime.
Con CAST, indica la expresión y el tipo de destino; Con CONVERT, hay un tercer argumento que representa el estilo para la conversión, que es compatible con algunas conversiones, como entre cadenas de caracteres y valores de fecha y hora. Por ejemplo, CONVERTIR (FECHA, '1/2/2012', 101) convierte la cadena de caracteres literales a FECHA utilizando el estilo 101 que representa el estándar de los Estados Unidos.
fuente
Para ampliar la respuesta anterior copiada por Shakti , he podido medir una diferencia de rendimiento entre las dos funciones.
Estaba probando el rendimiento de las variaciones de la solución a esta pregunta y descubrí que la desviación estándar y los tiempos de ejecución máximos eran mayores cuando se usaba
CAST
.* Tiempos en milisegundos, redondeados a la 1/300 de segundo más cercana según la precisión del
DateTime
tipofuente
Algo que nadie parece haber notado todavía es la legibilidad. Teniendo…
... puede ser más fácil de entender que ...
fuente
CAST(Column1 AS int)
es más lógico leer queCONVERT(int, Column1)
incluso para expresiones largasCAST utiliza el estándar ANSI. En caso de portabilidad, esto funcionará en otras plataformas. CONVERT es específico para el servidor sql. Pero es una función muy fuerte. Puede especificar diferentes estilos para fechas
fuente