yyyy fecha entre ejemplo diferencia convert cast sql sql-server database tsql

fecha - T-SQL Cast versus Convert



convert varchar to int sql (6)

Algo que nadie parece haber notado aún es la legibilidad. Teniendo…

CONVERT(SomeType, SomeReallyLongExpression + ThatMayEvenSpan + MultipleLines )

... puede ser más fácil de entender que ...

CAST(SomeReallyLongExpression + ThatMayEvenSpan + MultipleLines AS SomeType )

¿Cuál es la guía general sobre cuándo debe usar CAST frente a CONVERT ? ¿Hay algún problema de rendimiento relacionado con la elección de uno frente al otro? ¿Está uno más cerca de ANSI-SQL?


CAST es estándar SQL, pero CONVERT no lo es (solo para el dialecto T-SQL), tenemos una pequeña ventaja para convertir en el caso datetime

con CAST, indicas la expresión y el tipo de destino; con CONVERTIR, hay un tercer argumento que representa el estilo de la conversión, que se admite para algunas conversiones, como entre las cadenas de caracteres y los valores de fecha y hora. Por ejemplo, CONVERTIR (FECHA, ''1/2/2012'', 101) convierte la cadena de caracteres literal a FECHA utilizando el estilo 101 que representa el estándar de los Estados Unidos.

Saludos,


CAST utiliza el estándar ANSI. En caso de portabilidad, esto funcionará en otras plataformas. CONVERTIR es específico para el servidor SQL. Pero es una función muy fuerte. Puedes especificar diferentes estilos para las fechas



Para ampliar la respuesta anterior copiada por Shakti , he podido medir la 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 al 1/300 más cercano de segundo según la precisión del tipo DateTime


CONVERT es específico de SQL Server, CAST es ANSI.

CONVERT es más flexible ya que puede formatear fechas, etc. Aparte de eso, son más o menos iguales. Si no te importan las funciones extendidas, usa CAST .

EDITAR:

Como lo anotaron @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, en la que no se usa CAST ni CONVERT). Para obtener más información, consulte CAST y CONVERTIR 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 cuando sea posible.