Blog de Analytics y Gestión de Datos

11/2/2025 | Ing Fabiana Sasia

SQL Server : CAST vs. CONVERT convirtiendo fechas.

Cuando trabajás con fechas en SQL Server, es inevitable que en algún momento necesites convertir datos de un formato a otro. Ahí es donde descubris a CAST y CONVERT y no sabés cual es la diferencia entre ambas y tampoco tenes idea de cómo usarlas…

Estas funciones son esenciales para convertir datos y aunque similares, tienen sus diferencias.

🔹 ¿Cuál es mejor para trabajar con fechas?
🔹 ¿Qué diferencias tienen en la práctica?
🔹 ¿Cómo evitar errores al usarlas?

Hoy responderemos esas preguntas con ejemplos claros, desde lo básico hasta lo avanzado, y exploraremos los 10 errores más comunes al usarlas en fechas.

¿Qué diferencias tienen las funciones Cast y Convert?

Ambas funciones sirven para convertir un tipo de dato en otro, pero …

Función

Características

CAST

Es la función estándar de ANSI SQL.
Convierte tipos de datos sin opciones de formato.
Ideal para conversiones básicas y portabilidad en otros motores SQL.

CONVERT

Exclusiva de SQL Server.
Permite formatear la salida (especialmente útil con fechas y números).
Ofrece mayor control sobre cómo se presentan los datos.

📌 Regla clave:

  • Usa CAST cuando solo necesites convertir un dato a otro tipo.
  • Usa CONVERT cuando tengas que formatear la salida, especialmente con fechas.

Vamos a los ejemplos

🔹 Ejemplo 1: Convertir una Cadena a Fecha

CAST (Conversión Estándar)

 

SELECT CAST(‘2024-02-01’ AS DATE) AS Fecha_Convertida;

🔹 Resultado:

Fecha_Convertida

2024-02-01

CONVERT (Especificando Formato)

 

SELECT CONVERT(DATE, ’01/02/2024′, 103) AS Fecha_Convertida;

🔹 Resultado:

Fecha_Convertida

2024-02-01

📌 Diferencia clave:

  • CAST() usa la conversión predeterminada y asume el formato correcto.
  • CONVERT() te permite especificar cómo se interpreta la cadena.

Convertir Fechas a Texto

A veces necesitas convertir fechas a texto para reportes o exportaciones. Aca van los ejemplos

🔹 Ejemplo 2: Convertir una Fecha a Texto

Usando CAST:

SELECT CAST(GETDATE() AS VARCHAR(20)) AS Fecha_Texto;

🔹 Resultado:

Fecha_Texto

Feb 1 2024 2:30PM

Usando CONVERT con un Formato Específico:

SELECT CONVERT(VARCHAR, GETDATE(), 103) AS Fecha_Formateada;

🔹 Resultado:

Fecha_Formateada

01/02/2024

📌 Diferencia clave:

  • CAST() usa el formato por defecto del sistema.
  • CONVERT() te permite personalizar cómo se muestra la fecha.

Convertir Tipos de Fechas en SQL Server

Ejemplo 3: Convertir entre formatos de fecha

SELECT 

    CAST(GETDATE() AS DATETIME2) AS Convertido_DATETIME2,

    CONVERT(VARCHAR, GETDATE(), 120) AS Convertido_Texto_ISO;

🔹 Resultado:

Convertido_DATETIME2

Convertido_Texto_ISO

2024-02-01 14:30:00.1234567

2024-02-01 14:30:00

📌 Diferencia clave:

  • CAST() respeta la precisión máxima del tipo de dato.
  • CONVERT() nos deja ajustar la salida como texto.

Los 10 Errores Más Comunes con CAST y CONVERT (y cómo evitarlos)

1 No especificar el formato al convertir texto a fecha

🔴 Error:

SELECT CONVERT(DATE, ’01/02/2024′, 101); — MM/DD/YYYY

🔹 Resultado incorrecto: 2024-01-02 en vez de 2024-02-01.

Solución: Usa el estilo correcto (103 para DD/MM/YYYY).

SELECT CONVERT(DATE, ’01/02/2024′, 103);

2️ Convertir texto inválido a fecha

🔴 Error:

SELECT CAST(’31-Feb-2024′ AS DATE);

Falla: Conversion failed when converting date and/or time from character string.

Solución: Usa ISDATE() antes de convertir.

SELECT IIF(ISDATE(’31-Feb-2024′) = 1, CAST(’31-Feb-2024′ AS DATE), ‘Fecha Inválida’);

3️ No definir tamaño de VARCHAR al convertir fechas a texto

🔴 Error:

SELECT CAST(GETDATE() AS VARCHAR);

Falla: Puede truncar la fecha.

Solución: Define el tamaño.

 

SELECT CAST(GETDATE() AS VARCHAR(20));

4️ Usar CAST en vez de CONVERT para formatear fechas

🔴 Error:

SELECT CAST(GETDATE() AS VARCHAR);

Solución: Usa CONVERT con un formato definido.

sql

CopiarEditar

SELECT CONVERT(VARCHAR, GETDATE(), 103);

5️ No convertir antes de concatenar

🔴 Error:

SELECT ‘Hoy es ‘ + GETDATE();

Falla: Conversion failed when converting date and/or time from character string.

Solución: Convierte antes de concatenar.

SELECT ‘Hoy es ‘ + CONVERT(VARCHAR, GETDATE(), 103);

6️ Olvidar el redondeo en SMALLDATETIME

🔴 Error:

SELECT CAST(‘2024-01-31 14:35:29’ AS SMALLDATETIME);

🔹 Resultado: 2024-01-31 14:36:00 (redondeado).

Solución: Usa DATETIME2 si necesitas más precisión.

7️ Comparar fechas sin truncar la hora

🔴 Error:

SELECT * FROM Pedidos WHERE FechaPedido = ‘2024-01-31’;

🔹 Problema: No devuelve registros si FechaPedido tiene hora.

Solución:

SELECT * FROM Pedidos WHERE CAST(FechaPedido AS DATE) = ‘2024-01-31’;

8️ Usar YEAR() en filtros y romper los índices

🔴 Error:

SELECT * FROM Ventas WHERE YEAR(FechaVenta) = 2024;

Solución: Usa rangos de fechas.

SELECT * FROM Ventas WHERE FechaVenta BETWEEN ‘2024-01-01’ AND ‘2024-12-31’;

9️ No validar diferencias entre fechas antes de operar

🔴 Error:

SELECT DATEDIFF(YEAR, ‘2000-12-31’, ‘2024-01-01’);

🔹 Resultado incorrecto: 24 en vez de 23.

Solución: Usa cálculos más precisos.

SELECT DATEDIFF(DAY, ‘2000-12-31’, ‘2024-01-01’) / 365.25;

🔟 No verificar el formato antes de exportar

Solución: Usa siempre CONVERT() con 120 para ISO 8601.

SELECT CONVERT(VARCHAR, GETDATE(), 120);

Conclusión: CAST vs. CONVERT.

✔️ Usa CAST para conversiones estándar entre datatypes.
✔️ Usa CONVERT para formatear fechas.
✔️ Evita errores comunes usando los estilos correctos.

🚀 Mucha suerte con estas funciones. Si tenes dudas o consultas podes escribirnos a info@dba24.com.ar