En SQL Server, CONVERT()
La función convierte una expresión de un tipo de datos a otro.
Aquí hay una descripción general rápida de la función con ejemplos.
Sintaxis
La sintaxis es así:
CONVERT ( data_type [ ( length ) ] , expression [ , style ] )
Donde expression
es la expresión a convertir, data_type
es el nuevo tipo de datos y length
es una longitud opcional para el nuevo tipo de datos.
El style
opcional El argumento se puede usar para especificar cómo la función debe traducir la expression
argumento. Por ejemplo, podría usar este argumento para especificar el formato de fecha.
Ejemplo
Aquí hay un ejemplo de cómo convertir una cadena a decimal:
SELECT CONVERT(DECIMAL(5,2), '007');
Resultado:
7.00
Cadena hasta la fecha
Este es un ejemplo de conversión de una cadena a una fecha:
SELECT CONVERT(date, '09 Feb 2030');
Resultado:
2030-02-09
En este caso el CONVERT()
La función pudo determinar qué partes de la fecha son cuáles porque proporcioné la fecha en un formato que reconoce.
Pasar un valor que no se puede convertir como una fecha da como resultado un error:
SELECT CONVERT(date, 'My Birthday');
Resultado:
Msg 241, Level 16, State 1, Line 1 Conversion failed when converting date and/or time from character string.
Configuración regional
El idioma de la sesión actual puede marcar la diferencia en cómo se interpretan las fechas.
Esto es lo que sucede cuando se usa el idioma británico:
SET LANGUAGE British;
SELECT CONVERT(date, '09/02/2030');
Resultado:
2030-02-09
En este caso, la fecha se interpretó como el día nueve de febrero.
Cambiemos el idioma a us_English
:
SET LANGUAGE us_English;
SELECT CONVERT(date, '09/02/2030');
Resultado:
2030-09-02
Esta vez interpretó la fecha como el segundo día de septiembre.
El style
Argumento
Podemos usar el style
opcional argumento para especificar cómo debe traducirse la expresión.
Ejemplo:
SET LANGUAGE British;
SELECT
CONVERT(date, '09/02/2030') AS "British",
CONVERT(date, '09/02/2030', 101) AS "US",
CONVERT(date, '09/02/30', 1) AS "US (short)",
CONVERT(date, '20300902', 112) AS "ISO",
CONVERT(date, '09.02.2030', 104) AS "German";
Resultado:
+------------+------------+--------------+------------+------------+ | British | US | US (short) | ISO | German | |------------+------------+--------------+------------+------------| | 2030-02-09 | 2030-09-02 | 2030-09-02 | 2030-09-02 | 2030-02-09 | +------------+------------+--------------+------------+------------+
Concatenación de cadenas
Aquí hay un ejemplo de conversión de un valor numérico a una cadena para concatenar el valor con una cadena:
SELECT 'Age: ' + CONVERT(varchar(10), 27);
Resultado:
Age: 27
Esto es lo que sucede si no lo convertimos primero:
SELECT 'Age: ' + 27;
Resultado:
Msg 245, Level 16, State 1, Line 1 Conversion failed when converting the varchar value 'Age: ' to data type int.
Al intentar concatenar dos valores con diferentes tipos de datos, SQL Server necesita convertir implícitamente uno de los valores para usar el tipo de datos del otro, de modo que ambos sean del mismo tipo de datos antes de poder realizar la concatenación. Sigue las reglas de precedencia de tipos de datos para hacer esta conversión.
En SQL Server, el int
tipo de datos tiene una precedencia mayor que varchar
.
Por lo tanto, en el ejemplo anterior, SQL Server intenta convertir la cadena en un número entero, pero falla porque la cadena no se puede convertir en un número entero.
Texto truncado
Un pequeño truco útil que podemos realizar con CONVERT()
La función es truncar cadenas más largas a una longitud más legible.
Aquí hay un ejemplo de texto truncado seleccionado de una tabla de base de datos:
SELECT
ProductName,
CONVERT(varchar(20), ProductName) AS Truncated
FROM Products;
Resultado:
+---------------------------------+----------------------+ | ProductName | Truncated | |---------------------------------+----------------------| | Left handed screwdriver | Left handed screwdri | | Long Weight (blue) | Long Weight (blue) | | Long Weight (green) | Long Weight (green) | | Sledge Hammer | Sledge Hammer | | Chainsaw | Chainsaw | | Straw Dog Box | Straw Dog Box | | Bottomless Coffee Mugs (4 Pack) | Bottomless Coffee Mu | | Right handed screwdriver | Right handed screwdr | +---------------------------------+----------------------+
Más información
El CONVERT()
La función funciona de manera similar a CAST()
función, y muchas conversiones de datos se pueden hacer usando cualquiera de los dos. Dicho esto, hay diferencias entre ellos.
Consulte la documentación de Microsoft para CAST()
y CONVERT()
para obtener información más detallada sobre el uso de esta función.