Saltar al contenido

Formatear fecha en SQL Server: Función CONVERT() Guía completa

¿Necesitas convertir una fecha en un formato específico para tu consulta SQL? La función CONVERT() de SQL Server te permite formatear fechas y horas de diversas maneras, simplificando el manejo de datos temporales en tus proyectos.

En este artículo, exploraremos la sintaxis de CONVERT(), los diferentes códigos de formato disponibles y cómo utilizarla en casos prácticos en SQL Server para convertir una fechas en sql server a diferentes formatos ademas te incluyo su version en ingles.

Índice

    ¿Cómo se ponen las fechas en SQL Server?

    para poder dar un formato correcto debemos estar claro la forma en la cual podemos definir un campo fechas en sql server pora saber como insertar esta informacion. SQL Server ofrece tipos de datos específicos para almacenar fechas y horas:

    Tipos de datos definidos

    • date: Almacena solo la fecha (sin hora).
    • datetime: Almacena la fecha y hora.
    • smalldatetime: Almacena la fecha y hora con menor precisión que datetime.

    apartir de esta seleccion del tipo de datos podemos proceder a definir y poner una fecha en un formato especifico.

    DECLARE @fecha date
    SET @fecha = '2024-03-11'
    
    SELECT @fecha
    

    Te recordamos que existen ciertas diferencias entre cast y convert que deberias entender. este articulo solo se centra en el uso de la funcion convert de SQL Server aunque es posible hacer algunas converciones de formatos de fechas en postgresql o mysql usando una funcion similar.

    Ventajas de usar CONVERT() para Formatear fecha en SQL Server:

    • Flexibilidad: Ofrece una amplia variedad de códigos de formato para personalizar la presentación de las fechas.
    • Simplicidad: Su sintaxis es intuitiva y fácil de aprender.
    • Eficiencia: Realiza conversiones de tipos de datos de forma rápida y precisa.
    • Compatibilidad: Funciona con diferentes versiones de SQL Server.

    Sintaxis de la función CONVERT() para formato:

    CONVERT(tipo_de_dato, expresión [, estilo])
    

    Argumentos:

    • tipo_de_dato: Especifica el tipo de dato al que se desea convertir la fecha.
    • expresión: Es la fecha o variable que se desea formatear.
    • estilo (opcional): Define el formato específico de la salida.

    Códigos para formatear

    CódigoDescripciónEjemploResultado
    ddDía del mes (con dos dígitos)CONVERT(varchar(2), '2024-03-11', 103)11
    mmMes del año (con dos dígitos)CONVERT(varchar(2), '2024-03-11', 103)03
    yyyyAño (con cuatro dígitos)CONVERT(varchar(4), '2024-03-11', 103)2024
    hhHora (formato de 12 horas)CONVERT(varchar(2), '2024-03-11 16:42:59', 108)04
    HHHora (formato de 24 horas)CONVERT(varchar(2), '2024-03-11 16:42:59', 108)16
    miMinutosCONVERT(varchar(2), '2024-03-11 16:42:59', 108)42
    ssSegundosCONVERT(varchar(2), '2024-03-11 16:42:59', 108)59

    Ejemplos prácticos para Formatear fecha en SQL Server:

    Formatear fecha en SQL Server: Función CONVERT()

    1. Obtener la fecha actual con formato dd/mm/yyyy:

    SELECT CONVERT(varchar(10), GETDATE(), 103)
    

    2. Convertir una fecha a formato YYYY-MM-DD:

    SELECT CONVERT(date, '2024-03-11', 120)
    

    3. Extraer la hora de una fecha:

    SELECT CONVERT(varchar(5), '2024-03-11 16:42:59', 108)
    

    4. Obtener la fecha y hora actual en formato dd/mm/yyyy hh:mm:ss:

    SELECT CONVERT(varchar(19), GETDATE(), 103) + ' ' + CONVERT(varchar(5), GETDATE(), 108)
    

    5. Obtener la fecha en formato español:

    SELECT CONVERT(varchar(10), '2024-03-11', 104)
    

    6. Obtener la fecha en formato alemán:

    SELECT CONVERT(varchar(10), '2024-03-11', 105)
    

    7. Obtener la fecha en formato francés:

    SELECT CONVERT(varchar(10), '2024-03-11', 106)
    

    8. Convertir una fecha a formato ISO 8601:

    SELECT CONVERT(varchar(25), '2024-03-11 16:42:59', 121)
    

    9. Obtener la diferencia entre dos fechas:

    SELECT DATEDIFF(dd, '2024-03-11', '2023-12-25') AS 'Días de diferencia'
    

    Explicación del ejemplo 9 diferencia en días entre dos fechas:

    Este ejemplo utiliza la función DATEDIFF() para calcular la diferencia en días entre dos fechas. La sintaxis es:

    DATEDIFF(unidad_de_tiempo, fecha_inicial, fecha_final)
    

    En este caso:

    • unidad_de_tiempo: Se especifica como dd para obtener la diferencia en días.
    • fecha_inicial: Es la fecha de referencia, en este caso ‘2024-03-11’.
    • fecha_final: Es la fecha a comparar, en este caso ‘2023-12-25’.

    El resultado se almacena en un alias llamado ‘Días de diferencia’ para una mejor comprensión.

    Otros ejemplos con DATEDIFF() para dar formato:

    • Calcular la diferencia en meses:
    SELECT DATEDIFF(mm, '2024-03-11', '2023-12-25') AS 'Meses de diferencia'
    
    • Calcular la diferencia en años:
    SELECT DATEDIFF(yyyy, '2024-03-11', '2023-12-25') AS 'Años de diferencia'
    

    te recomiendo ver nuestro articulo de como calcular la edad de en sql server.

    Consejos:

    • Define el tipo de dato adecuado: Elegir el tipo de dato de fecha y hora correcto para cada situación.
    • Utiliza la función CONVERT(): Es la forma más flexible de formatear fechas.
    • Conoce los formatos predefinidos: Ahorra tiempo utilizando los formatos predefinidos de SQL Server.
    • Explora las funciones de fecha y hora: Aprovecha las funciones disponibles para realizar cálculos y operaciones con fechas.

    Conclusión:

    La función CONVERT() es una herramienta poderosa y versátil para formatear fechas en SQL Server. Este artículo te ha brindado una guía completa para comprender su funcionamiento, sintaxis, códigos de formato y ejemplos de uso. Al incluir ejemplos adicionales como el cálculo de diferencias entre fechas, se enriquece el contenido y lo hace más valioso para usuarios que buscan soluciones prácticas a sus consultas.