Saltar al contenido

Cómo formatear fecha en SQL Server: Función CONVERT()

Las fechas son esenciales en la mayoría de las aplicaciones. A veces, necesitamos mostrar una fecha en el formato correcto para nuestro usuario. Por ejemplo, si estamos mostrando la fecha en el formato «Año-Mes-Día», quizás el usuario quiera verlo en «Día-Año-Mes». En este artículo, vamos a aprender cómo usar la función CONVERT() en SQL Server para convertir una DateTime a diferentes formatos.

Índice

    Situación

    Al trabajar en reportes de empresas microsoft sql server nos facilita la vida puesto que nos permite con la funcion convert aplicar formatos algo que no podemos hacer con la funcion del standard de sql cast. Por lo cual en esta ocacion te presentamos una situacion muy comun dentro de los desarrollos programas en el lenguaje que prefieras o en el diseño reportes en general que utilzan sql server 2016 como sgbd.

    Hay muchos casos en los que las fechas y las horas no aparecen en en el formato que requiere el usuario, ni el resultado de una consulta se ajusta a las necesidades. Una opción es formatear los datos desde el software(aplicando alguna ajuste). Otra opción es utilizar las función Convert() de SQL Server para formatear la cadena de fecha por usted.

    Convert fecha sql
    Convert fecha

    Tipos de datos y funciones de fecha y hora (Transact-SQL)

    Transact-SQL utiliza la fecha y hora del sistema operativo del servidor o pc donde se encuentra instalada la instancia de SQL Server. En la version de SQL Server 2019 (15.x) o 2022 deriva los valores mediante la API de GetSystemTimeAsFileTime.

    Lista de tipos de datos

    • Time
    • Date
    • smalldatetime
    • datetime
    • datetime2
    • datetimeoffset

    Todos estos tipos de datos varian en formato y presicion por lo cual es importante contar con una funcion que te permita convertir las fechas al formato adecuado. De esta forma podemos formatear un fecha sin hora en sql server.

    Requerimiento SQL Server Management Studio

    Es importante recordar que la herramienta impresindible para ejecutar estos ejemplos es el SQL Server Management Studio pero en caso de podras ejecutar los comando Tsql en otra GUI que permita la conexion a la instancia de sql server, como es Heidisql la cual es una herramienta muy flexible para trabajar con sql server.

    Errores al convertir fechas

    Normalmente trabajar con fechas en cualquier sistema de gestion de base de datos como pasa es importante tomar encuenta cual es el fomato requerido o la region para en mysql convertir fechas relativamente mas facil que en microsoft sql server puesto que puedes manipular las variables.

    para solucionar cualquier problema con la conversion de fechas con el comando convert en este articulo encontraras el formato necesario. debemos recordar que el valor para convertir debe ser de un tipo de datos fecha esto es asi para mysql y sql server. Pero si toca tambien es lo mismo para power BI.

    Cómo formatear fecha en SQL Server con la función CONVERT()?

    La función CONVERT() se usa para convertir un valor de un tipo de datos a otro. También podemos usarla para formatear la fecha y hora. A continuación, se muestra el sintaxis general de la función CONVERT().

    CONVERT (data_type [length], expression, style)

    En la sintaxis anterior, el data_type es el tipo de datos al que queremos convertir. La longitud es opcional y se usa solo si estamos convirtiendo a un tipo de caracteres. La expresión es el valor que se va a convertir. El style es opcional y se usa para indicar el formato de salida de la fecha/hora.

    Comando para filtrar o convertir fechas

    Cómo Convertir fecha en mysql

    Convertir fecha con formato en Postgresql

    Where o between para sacar fechas sql

    Aplicar Formato de moneda en las columnas

    Ejemplos prácticos de uso de la función CONVERT()

    Ahora, vamos a ver algunos ejemplos de uso de la función CONVERT().

    Ejemplo #01 –sql fecha formato dd/mm/yyyy

    En este ejemplo, convertiremos una fecha y hora en el siguiente formato: sql fecha formato dd/mm/yyyy al ejecutar esta consulta generamos la fecha sin hora en sql server.

    SELECT CONVERT(VARCHAR, GETDATE(), 103) AS [DD/MM/YYYY];

    Ejemplo #02 – Convertir DateTime en formato mm-dd-yyyy

    En este ejemplo, convertiremos una fecha y hora en el siguiente formato: mm-dd-yyyy.

    SELECT CONVERT(VARCHAR, GETDATE(), 101) AS [MM-DD-YYYY];

    Ejemplo #03 – Convertir DateTime en formato yyyy/mm/dd

    En este ejemplo, convertiremos una fecha y hora en el siguiente formato: yyyy/mm/dd. al igual que en los ejemplos anteriores eliminamos la hora de la fecha para tener una fecha en el formato indicado.

    SELECT CONVERT(VARCHAR, GETDATE(), 111) AS [YYYY/MM/DD];

    Ejemplo #04 – Convertir DateTime en formato dd MMMM, yyyy

    En este ejemplo, convertiremos una fecha y hora en el siguiente formato: dd MMMM, yyyy.

    SELECT CONVERT(VARCHAR, GETDATE(), 106) AS [DD Month YYYY];

    Ejemplo #05 – Convertir DateTime en formato HH:mm tt

    En este ejemplo, convertiremos una fecha y hora en el siguiente formato: HH:mm tt.

    «`

    SELECT CONVERT(VARCHAR, GETDATE(), 100) AS [HH:MM AM/PM];

    «`

    Ejemplo #06 – Convertir DateTime en formato HH:mm:ss.fff tt

    En este ejemplo, convertiremos una fecha y hora en el siguiente formato: HH:mm:ss.fff tt.

    «`

    SELECT CONVERT(VARCHAR, GETDATE(), 108) AS [HH:MM:SS AM/PM];

    «`

    Ejemplo #07 – Convertir DateTime en formato dddd, dd MMMM yyyy

    En este ejemplo, convertiremos una fecha y hora en el siguiente formato: dddd, dd MMMM yyyy.

    «`

    SELECT CONVERT(VARCHAR, GETDATE(), 113) AS [DDDD, DD Month YYYY];

    «`

    Ejemplo #08 – Convertir DateTime en formato dddd HH:mm tt

    En este ejemplo, convertiremos una fecha y hora en el siguiente formato: dddd HH:mm tt.

    «`

    SELECT CONVERT(VARCHAR, GETDATE(), 114) AS [DDDD HH:MM AM/PM];

    «`

    Ejemplo #09 – Convertir DateTime en formato yyyy-mm-dd hh:mm:ss.fff

    En este ejemplo, convertiremos una fecha y hora en el siguiente formato: yyyy-mm-dd hh:mm:ss.fff.

    «`

    SELECT CONVERT(VARCHAR, GETDATE(), 120) AS [YYYY-MM-DD HH:MM:SS.FFF];

    «`

    Ejemplo #010 – Convertir DateTime en formato dd/mm/yy hh:mm

    En este ejemplo, convertiremos una fecha y hora en el siguiente formato: dd/mm/yy hh:mm.

    «`

    SELECT CONVERT(VARCHAR, GETDATE(), 102) AS [DD/MM/YY HH:MM];

    «`

    Ejemplo #011 – Convertir DateTime en formato mm-dd-yy hh:mi

    En este ejemplo, convertiremos una fecha y hora en el siguiente formato: mm-dd-yy hh:mi.

    «`

    SELECT CONVERT(VARCHAR, GETDATE(), 104) AS [MM-DD-YY HH:MI];

    «`

    Ejemplo #012 – Convertir DateTime en formato hh:mm tt mm/dd/yy

    En este ejemplo, convertiremos una fecha y hora en el siguiente formato: hh:mm tt mm/dd/yy.

    «`

    SELECT CONVERT(VARCHAR, GETDATE(), 105) AS [HH:MM AM/PM MM/DD/YY];

    «

    Ejemplo #013 – Convertir DateTime en formato hh:mm tt dd/mm/yy

    En este ejemplo, convertiremos una fecha y hora en el siguiente formato: hh:mm tt dd/mm/yy.

    «`

    SELECT CONVERT(VARCHAR, GETDATE(), 107) AS [HH:MM AM/PM DD/MM/YY]

    «

    Ejemplo #014 – Convertir DateTime en formato mmddyyhhmi

    En este ejemplo, convertiremos una fecha y hora en el siguiente formato: mmddyyhhmi.

    «`

    SELECT CONVERT(VARCHAR, GETDATE(), 112) AS [MMDDYYHHMI];

    «`

    Ejemplo #015 – Convertir DateTime en formato dd-mmm-yy hh:mi

    En este ejemplo, convertiremos una fecha y hora en el siguiente formato: dd-mmm-yy hh:mi.

    «`

    SELECT CONVERT(VARCHAR, GETDATE(), 109) AS [DD-MMM-YY HH:MI];

    «`

    Ejemplo #016 – Convertir DateTime en formato dddd mm/dd/yy hh:mm tt

    En este ejemplo, convertiremos una fecha y hora en el siguiente formato: dddd mm/dd/yy hh:mm tt.

    «`

    SELECT CONVERT(VARCHAR, GETDATE(), 103) AS [DDDD MM/DD/YY HH:MM AM/PM];

    «`

    Ejemplo #017 – Convertir DateTime en formato dddd dd-mmm-yy hh:mm tt

    En este ejemplo, convertiremos una fecha y hora en el siguiente formato: dddd dd-mmm-yy hh:mm tt.

    «`

    SELECT CONVERT(VARCHAR, GETDATE(), 110) AS [DDDD DD-MMM-YY HH:MM AM/PM];

    «`

    ¿Cuándo conviene usar la función CONVERT() para formatear fecha en SQL Server?

    En general, la función CONVERT() es una buena opción cuando necesitamos formatear una fecha en SQL Server. Sin embargo, debemos tener en cuenta que esta función puede afectar el rendimiento de nuestras consultas si no se usa correctamente.

    Por ejemplo, si tenemos una tabla con millones de registros y necesitamos convertir la columna fecha en el formato dd/mm/yyyy, podría ser mejor crear una nueva columna con el valor formateado en lugar de usar CONVERT() en la consulta. De esta forma, evitaremos tener que convertir los datos cada vez que hagamos una consulta y mejoraremos el rendimiento de nuestras consultas.

    Funcion Format vs convert de sql server para fechas

    A partir de SQL Server 2012 , se incluye una función para convertir fechas y dar formato que es similar a la función to_date postgresql . La función Convert de SQL Server tiene poca flexibilidad para manejar los cambios y dar formato por lo cual microsoft escucho a sus usuarios e incluyo una funcion que te permite trabajar con las fechas y manipular su formato.

    La función FORMAT debe utilizarse con los tipos siguientes tipos de datos de fecha y hora de una columna de fecha (tipo de datos date, datetime, datetime2, smalldatetime, datetimeoffset, etc.)

    Con la función FORMATO de SQL Server, no necesitamos saber el número de formato a usar para obtener el formato de fecha correcto como vimos al principio del articulo.

    Sintaxis formato fecha regional

    SELECT FORMAT (conlumna tipo fecha, ‘Formato fecha’, ‘region’) as date

    Como poemos visualizar podremos hacer formatear la fecha segun la region que nos encontremos siempreque conoscas el codigo de la region ver debajo listado de regiones mas comunes para utilizar con la funcion format apartir de la version de sql server 2012 en adelante.

    En los siguiente ejemplo podremos convertir las fechas segun la region determinada usando el las culture mas comunes con la funcion format sql server:

    • SELECT FORMAT (getdate(), ‘d’, ‘en-US’) as date
    • SELECT FORMAT (getdate(), ‘d’, ‘fr-FR’) as date
    • SELECT FORMAT (getdate(), ‘d’, ‘bs-Latn-BA’) as date
    • SELECT FORMAT (getdate(), ‘d’, ‘bs-Latn-BA’) as date
    • SELECT FORMAT (getdate(), ‘d’, ‘zh-CN’) as date
    • SELECT FORMAT (getdate(), ‘d’, ‘es-ES’) as date

    Sintaxis formato fecha con variables

    SELECT FORMAT (getdate(), 'dd-MM-yy') as date
    
    Podemos ver la funcion format es distinta a la funcion convert en esta utilizamos valiriables las cuales estan

    Podemos ver la funcion format es distinta a la funcion convert en esta utilizamos variables las mismas estan bien definida

    • dd – numero del dia 01-31
    • MM – numero de meses 01-12
    • yy – año con dos digitos

    If this was run for March 21, 2021 the output would be: 21-03-21, cuando usamos Format podemos generar una fecha sin hora en sql server pero tambien sacar solo la hora de una fecha como podemos ver en el siguiente ejemplo.

    Sintaxis extraer hora de la fecha

    SELECT FORMAT (getdate(), 'hh:mm:ss') as time
    GO

    Variable mas utilizadas

    • hh – hora 01-12
    • mm – minutos 00-59
    • ss – segundos 00-59

    Ejemplos mas comunes para formato las fechas y horas

    SELECT FORMAT (getdate(), ‘yyyy-MM-dd hh:mm:ss tt’) as date2021-03-21 11:36:14 AM
    SELECT FORMAT (getdate(), ‘yyyy.MM.dd hh:mm:ss t’) as date2021.03.21 11:36:14 A
    SELECT FORMAT (getdate(), ‘dddd, MMMM, yyyy’,’es-es’) as date –Spanishdomingo, marzo, 2021

    Decargar Script de ejemplos

    Descarga estos ejemplos para convertir numero a formato de fecnas o para dar el formato de Poner formato de moneda en SQL Server.

    Otras funciones de cadena importantes

    01 Funciones SQL para Manejar Cadenas de Caracteres

    02 Funcion substring en sql con ejemplos

    Conclusión

    En resumen, la función CONVERT() puede ser muy útil para formatear fecha en SQL Server, pero debemos tener cuidado al usarla para no afectar el rendimiento de nuestras consultas.

    Hasta la próxima entrada!!

    Bye :D!!