La función SQL CONVERT es una función del sistema T-SQL que se utiliza para convertir una columna de una tipología de datos a otro. Como parte de su sintaxis, especifica un estilo para usar en la conversión, lo que la convierte en una función de conversión muy segura.
La sintaxis de la función SQL CONVERT
La función SQL CONVERT es muy simple. Sigue este patrón:
Función CONVERT en SQL Server
La función CONVERT se utiliza para cambiar un valor de un tipo de dato a otro.
A diferencia de CAST, CONVERT permite usar un parámetro adicional llamado
estilo, útil especialmente para dar formato a fechas.
Sintaxis:
CONVERT(, , [estilo_opcional])
Ejemplos:
-- Convertir fecha actual a texto en formato DD/MM/YY
SELECT CONVERT(VARCHAR, GETDATE(), 3) AS 'DD/MM/YY';
-- Convertir fecha actual a texto en formato DD/MM/YYYY
SELECT CONVERT(VARCHAR, GETDATE(), 103) AS 'DD/MM/YYYY';
-- Convertir número decimal a entero
SELECT CONVERT(INT, 45.89) AS 'NumeroEntero';
-- Convertir texto a fecha
SELECT CONVERT(DATE, '2023-12-01', 120) AS 'FechaConvertida';
Analicemos cada parte de la sintaxis de SQL CONVERT:
- Su primer argumento es el tipo de datos de destino al que desea que se convierta su columna o expresión.
- El segundo argumento es su columna o expresión que desea convertir «sobre la marcha»
- El último argumento opcional es el estilo que desea utilizar para la conversión. Es simplemente un número. Veremos qué números podemos elegir pronto.
Los argumentos están separados por coma y en paréntesis.
Ejemplo de la función SQL Convert
El comando SQL Convertir de Transacciones SQL (T-SQL) se puede usar para convertir datos entre diferentes tipos. Al convertir un valor SQL DATETIME en un valor de cadena VarChar, se puede aplicar un código de estilo. Necesitamos ver algunos ejemplos especialmente con respecto al argumento de estilo.

utilizamos la función Getdate, para devolver la fecha actual y usarla como argumento en el ejemplo.
Tabla con código de estilo y Query
La siguiente tabla describe los códigos de estilo más populares que están disponibles para usar la función SQL convert entre una representación SQL datetime de fecha y hora y una de caracteres.
| FORMATO DE FECHA | |||
| Formato # | Query | Formato | Resultados |
|---|---|---|---|
| 1 | select convert(varchar, getdate(), 1) | mm/dd/yy | 12/30/22 |
| 2 | select convert(varchar, getdate(), 2) | yy.mm.dd | 22.12.30 |
| 3 | select convert(varchar, getdate(), 3) | dd/mm/yy | 30/12/22 |
| 4 | select convert(varchar, getdate(), 4) | dd.mm.yy | 30.12.22 |
| 5 | select convert(varchar, getdate(), 5) | dd-mm-yy | 30-12-22 |
| 6 | select convert(varchar, getdate(), 6) | dd-Mon-yy | 30 Dec 22 |
| 7 | select convert(varchar, getdate(), 7) | Mon dd, yy | Dec 30, 22 |
| 10 | select convert(varchar, getdate(), 10) | mm-dd-yy | 12-30-22 |
| 11 | select convert(varchar, getdate(), 11) | yy/mm/dd | 22/12/30 |
| 12 | select convert(varchar, getdate(), 12) | yymmdd | 221230 |
| 23 | select convert(varchar, getdate(), 23) | yyyy-mm-dd | 2022-12-30 |
| 31 | select convert(varchar, getdate(), 31) | yyyy-dd-mm | 2022-30-12 |
| 32 | select convert(varchar, getdate(), 32) | mm-dd-yyyy | 12-30-2022 |
| 33 | select convert(varchar, getdate(), 33) | mm-yyyy-dd | 12-2022-30 |
| 34 | select convert(varchar, getdate(), 34) | dd-mm-yyyy | 30-12-2022 |
| 35 | select convert(varchar, getdate(), 35) | dd-yyyy-mm | 30-2022-12 |
| 101 | select convert(varchar, getdate(), 101) | mm/dd/yyyy | 12/30/2022 |
| 102 | select convert(varchar, getdate(), 102) | yyyy.mm.dd | 2022.12.30 |
| 103 | select convert(varchar, getdate(), 103) | dd/mm/yyyy | 30/12/2022 |
| 104 | select convert(varchar, getdate(), 104) | dd.mm.yyyy | 30.12.2022 |
| 105 | select convert(varchar, getdate(), 105) | dd-mm-yyyy | 30-12-2022 |
| 106 | select convert(varchar, getdate(), 106) | dd Mon yyyy | 30 Dec 2022 |
| 107 | select convert(varchar, getdate(), 107) | Mon dd, yyyy | Dec 30, 2022 |
| 110 | select convert(varchar, getdate(), 110) | mm-dd-yyyy | 12-30-2022 |
| 111 | select convert(varchar, getdate(), 111) | yyyy/mm/dd | 2022/12/30 |
| 112 | select convert(varchar, getdate(), 112) | yyyymmdd | 20221230 |
| FORMATO DE TIEMPO | |||
| 8 | select convert(varchar, getdate(), 8) | hh:mm:ss | 00:38:54 |
| 14 | select convert(varchar, getdate(), 14) | hh:mm:ss:nnn | 00:38:54:840 |
| 24 | select convert(varchar, getdate(), 24) | hh:mm:ss | 00:38:54 |
| 108 | select convert(varchar, getdate(), 108) | hh:mm:ss | 00:38:54 |
| 114 | select convert(varchar, getdate(), 114) | hh:mm:ss:nnn | 00:38:54:840 |
| FORMATO DE FECHA Y HORA | |||
| 0 | select convert(varchar, getdate(), 0) | Mon dd yyyy hh:mm AM/PM | Dec 30 2022 12:38AM |
| 9 | select convert(varchar, getdate(), 9) | Mon dd yyyy hh:mm:ss:nnn AM/PM | Dec 30 2022 12:38:54:840AM |
| 13 | select convert(varchar, getdate(), 13) | dd Mon yyyy hh:mm:ss:nnn AM/PM | 30 Dec 2022 00:38:54:840AM |
| 20 | select convert(varchar, getdate(), 20) | yyyy-mm-dd hh:mm:ss | 2022-12-30 00:38:54 |
| 21 | select convert(varchar, getdate(), 21) | yyyy-mm-dd hh:mm:ss:nnn | 2022-12-30 00:38:54.840 |
| 22 | select convert(varchar, getdate(), 22) | mm/dd/yy hh:mm:ss AM/PM | 12/30/22 12:38:54 AM |
| 25 | select convert(varchar, getdate(), 25) | yyyy-mm-dd hh:mm:ss:nnn | 2022-12-30 00:38:54.840 |
| 26 | select convert(varchar, getdate(), 26) | yyyy-dd-mm hh:mm:ss:nnn | 2022-30-12 00:38:54.840 |
| 27 | select convert(varchar, getdate(), 27) | mm-dd-yyyy hh:mm:ss:nnn | 12-30-2022 00:38:54.840 |
| 28 | select convert(varchar, getdate(), 28) | mm-yyyy-dd hh:mm:ss:nnn | 12-2022-30 00:38:54.840 |
| 29 | select convert(varchar, getdate(), 29) | dd-mm-yyyy hh:mm:ss:nnn | 30-12-2022 00:38:54.840 |
| 30 | select convert(varchar, getdate(), 30) | dd-yyyy-mm hh:mm:ss:nnn | 30-2022-12 00:38:54.840 |
| 100 | select convert(varchar, getdate(), 100) | Mon dd yyyy hh:mm AM/PM | Dec 30 2022 12:38AM |
| 109 | select convert(varchar, getdate(), 109) | Mon dd yyyy hh:mm:ss:nnn AM/PM | Dec 30 2022 12:38:54:840AM |
| 113 | select convert(varchar, getdate(), 113) | dd Mon yyyy hh:mm:ss:nnn | 30 Dec 2022 00:38:54:840 |
| 120 | select convert(varchar, getdate(), 120) | yyyy-mm-dd hh:mm:ss | 2022-12-30 00:38:54 |
| 121 | select convert(varchar, getdate(), 121) | yyyy-mm-dd hh:mm:ss:nnn | 2022-12-30 00:38:54.840 |
| 126 | select convert(varchar, getdate(), 126) | yyyy-mm-dd T hh:mm:ss:nnn | 2022-12-30T00:38:54.840 |
| 127 | select convert(varchar, getdate(), 127) | yyyy-mm-dd T hh:mm:ss:nnn | 2022-12-30T00:38:54.840 |
En las tablas anteriores usamos SQL convert para trabajar con fecha y hora, por lo que en adelante podrás ver ejemplos con números.
Ejemplo convertir número a formato de texto SQL convert
Convertir un número entero en una cadena, es muy simple de hacer con la función SQL CONVERT:
Ejemplo: CONVERT de número a texto en SQL Server
Cuando se utiliza CONVERT para transformar un número en cadena (VARCHAR),
puedes especificar la longitud máxima. Si el número convertido excede esa longitud, se truncará.
-- Convertir un número decimal a texto sin límite específico
SELECT CONVERT(VARCHAR, 23.7) AS Resultado1;
-- Resultado: '23.7'
-- Convertir un número decimal a texto con longitud máxima de 4 caracteres
SELECT CONVERT(VARCHAR(4), 23.7) AS Resultado2;
-- Resultado: '23.7'
-- Si especificamos un tamaño menor (ej. VARCHAR(2)), se trunca
SELECT CONVERT(VARCHAR(2), 23.7) AS ResultadoTruncado;
-- Resultado: '23'
El valor que retorna es un formato de datos VARCHAR:
Ejemplo de sql convert con número entero a decimal
para convertir un numero entero a deicimal usemos sql CONVERT, sin usar el argumento de estilo opcional, Ejemplos:
Ejemplo: CONVERT a DECIMAL en SQL Server
Cuando se convierte un número a DECIMAL con CONVERT,
por defecto SQL Server aplica una escala de 2 decimales,
a menos que se especifique lo contrario.
-- Convertir un número entero a DECIMAL
SELECT CONVERT(DECIMAL(12), 12) AS Resultado;
-- Resultado: 12.00
-- Convertir con precisión y escala definidas
SELECT CONVERT(DECIMAL(12,4), 12) AS ResultadoPreciso;
-- Resultado: 12.0000
-- Convertir un número con decimales
SELECT CONVERT(DECIMAL(10,2), 45.6789) AS ResultadoRedondeado;
-- Resultado: 45.68
El resultado es 12.00 . Los dos especio ocupado por cero después del punto indica el formato decimal
También podemos obtener decimales a través de tipo de datos float
Ejemplo: CONVERT a FLOAT en SQL Server
El tipo FLOAT se utiliza para almacenar números en
punto flotante, lo que permite representar decimales con gran rango,
aunque no siempre con total exactitud (puede haber pequeñas variaciones por
redondeo binario).
-- Convertir un valor VARCHAR a FLOAT
SELECT CONVERT(float, '52.4') AS Resultado;
-- Resultado: 52.4
-- Convertir un número decimal a FLOAT
SELECT CONVERT(float, 15.49) AS Resultado;
-- Resultado: 15.49
-- Convertir entero a FLOAT
SELECT CONVERT(float, 100) AS EnteroConvertido;
-- Resultado: 100
si queremos número entero sin decimal
Ejemplo: sql CONVERT a INT en SQL Server
Cuando conviertes un valor decimal a INT con CONVERT,
el número se trunca, es decir, se eliminan los decimales sin redondeo.
-- Convertir un decimal a entero
SELECT CONVERT(int, 15.49) AS Resultado;
-- Resultado: 15
-- Convertir un valor FLOAT a INT
SELECT CONVERT(int, 99.99) AS Resultado;
-- Resultado: 99
-- Convertir un número entero (sin cambio)
SELECT CONVERT(int, 120) AS Resultado;
-- Resultado: 120
La comparación entre la función CAST y CONVERT
La función CAST puede convertir valores sobre la marcha, pero no le permite especificar un estilo al realizar la conversión.
Además, aquí hay un enlace a la documentación oficial de Microsoft sobre el tema de las funciones de conversión. En esta página, encontrará enlaces a las funciones sql CONVERT y CAST , así como a las variaciones » TRY_ » de cada una: Funciones de conversión (Transact-SQL)



