Saltar al contenido

Formatear fecha en SQL Server: Guía completa

En este artículo, exploraremos varios formatos de conversión de fechas en SQL para utilizarlos al escribir consultas SQL.

Trabajar con datos de tipo fecha en SQL puede ser complicado para los desarrolladores de SQL Server. Imaginemos una tabla de productos con una columna de marca de tiempo para cada pedido de cliente. Esto puede presentar los siguientes problemas:

  • No se pueden insertar datos en la tabla de productos porque la aplicación intenta insertar fechas en un formato diferente.
  • Supongamos que tiene datos en una tabla en el formato AAAA-MM-DD hh:mm:ss. Si desea generar un informe de ventas diario agrupado por fecha, necesitará que los datos aparezcan en el formato AAAA-MM-DD.

Nos encontraremos con muchos de estos escenarios en los que el formato de fecha no coincide con nuestros requisitos. No podemos cambiar las propiedades de la tabla para satisfacer cada necesidad específica. En estos casos, es necesario usar las funciones integradas en SQL Server para dar el formato de fecha requerido.

Índice

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

    Para asignar un formato correcto por lo cual te dejo la sintaxis ademas de sus requerimientos.

    La sintaxis para la función SQL CONVERT():

    SELECT CONVERT(data_type(length), date, DateFormatCode)
    • data_type: Debemos definir el tipo de dato junto con su longitud. En el caso de la conversión de fechas, utilizaremos el tipo de dato VARCHAR(length).
    • date: Especificamos la fecha que queremos convertir.
    • DateFormatCode: Especificamos el código de formato de fecha para convertir la fecha al formato deseado. Exploraremos más sobre este tema en la próxima sección.

    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-05-11'
    SELECT @fecha
    

    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.

    Tabla para formatear fechas

    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()

    Ejemplos para Formatear fecha en SQL Server

    Primero, Necesitamos declarar una variable para obtener la fecha y hora actual usando la función SQL GETDATE() con la siguiente consulta.

    declare @FechaActual   datetime 
    Set @FechaActual  =GETDATE() 
    Print @FechaActual  

    Tabla de consultas formatos de fecha en SQL

    En la tabla, se puede apreciar todos los formatos de fecha SQL juntos junto con su codigo.


    Formatos de fecha

    Consulta para Formatear fecha en SQL Server

    Datetime format as
    MM/DD/YY

    Standard: U.S.A.
    declare @FechaActual  datetime
    Set @FechaActual =GETDATE()
    Select CONVERT(varchar,@FechaActual ,1) as [MM/DD/YY]

    Datetime format in
    YY.MM.DD format

    Standard: ANSI
    declare @FechaActual  datetime
    Set @FechaActual =GETDATE() Select CONVERT(varchar,@FechaActual ,2) as [YY.MM.DD]

    Datetime format in
    DD/MM/YY format

    Standard: British/French
    declare @FechaActual  datetime
    Set @FechaActual =GETDATE() Select CONVERT(varchar,@FechaActual ,3) as [DD/MM/YY]

    Datetime format in DD.MM.YY format Standard: German
    declare @FechaActual  datetime
    Set @FechaActual =GETDATE()
    Select CONVERT(varchar,@FechaActual ,4) as [DD.MM.YY]

    Datetime format in
    DD-MM-YY format

    Standard: Italian
    declare @FechaActual  datetime
    Set @FechaActual =GETDATE()
    Select CONVERT(varchar,@FechaActual ,5) as [DD-MM-YY]

    Datetime format in
    DD MMM YY format

    Standard: Shortened month name
    declare @FechaActual  datetime Set @FechaActual =GETDATE() Select CONVERT(varchar,@FechaActual ,6) as [DD MMM YY]

    Datetime format in
    MMM DD, YY format

    Standard: Shortened month name
    declare @FechaActual  datetime Set @FechaActual =GETDATE() Select CONVERT(varchar,@FechaActual ,7) as [MMM DD,YY]

    Datetime Format
    In HH:MM: SS

    Standard: 24 hour time
    declare @FechaActual  datetime
    Set @FechaActual =GETDATE()
    Select CONVERT(varchar,@FechaActual ,8) as [hh:mm:ss]

    Datetime format as
    [MMM DD YYYY hh:mm:ss:mmm(AM/PM)]

    Standard: Default + milliseconds
    declare @FechaActual  datetime
    Set @FechaActual =GETDATE()
    Select CONVERT(varchar,@FechaActual ,9) as [MMM DD YYYY hh:mm:ss:mmm(AM/PM)]

    Datetime format in
    MM-DD-YY format

    Standard: USA
    declare @FechaActual  datetime
    Set @FechaActual =GETDATE()
    Select CONVERT(varchar,@FechaActual ,10) as [MM-DD-YY]

    Datetime format in
    YY/MM/DD format

    Standard: JAPAN
    declare @FechaActual  datetime
    Set @FechaActual =GETDATE()
    Select CONVERT(varchar,@FechaActual ,11) as [YY/MM/DD]

    Datetime format in
    YYMMDD format

    Standard: ISO
    declare @FechaActual  datetime Set @FechaActual =GETDATE() Select CONVERT(varchar,@FechaActual ,12) as [YYMMDD]

    Datetime format in
    DD MMM YYYY HH:MM:SS:MMM

    Standard: Europe default + milliseconds
    declare @FechaActual  datetime Set @FechaActual =GETDATE() Select CONVERT(varchar,@FechaActual ,13) as [DD MMM YYYY HH:MM:SS:MMM]

    Datetime format in
    HH:MM:SS:MMM

    Standard:  24 hour time with milliseconds
    declare @FechaActual  datetime
    Set @FechaActual =GETDATE()
    Select CONVERT(varchar,@FechaActual ,14) as [HH:MM:SS:MMM]

    Datetime format in
    YYYY-MM-DD HH:MM:SS

    Default: ODBC canonical
    declare @FechaActual  datetime
    Set @FechaActual =GETDATE()
    Select CONVERT(varchar,@FechaActual ,20) as [YYYY-MM-DD HH:MM:SS]

    Datetime format in
    YYYY-MM-DD HH:MM:SS.mmm

    Standard: ODBC canonical with milliseconds
    declare @FechaActual  datetime
    Set @FechaActual =GETDATE()
    Select CONVERT(varchar,@FechaActual ,21) as [YYYY-MM-DD HH:MM:SS.mmm]

    Datetime format in
    mm/dd/yy hh:mm:ss (AM/PM)

    Standard: USA with Time AM/PM
    declare @FechaActual  datetime
    Set @FechaActual =GETDATE() Select CONVERT(varchar,@FechaActual ,22) as [mm/dd/yy hh:mm:ss (AM/PM)]

    Datetime format in
    [yyyy-mm-dd]
    declare @FechaActual  datetime
    Set @FechaActual =GETDATE()
    Select CONVERT(varchar,@FechaActual ,23) as [yyyy-mm-dd]

    Datetime format in
    [hh:mm:ss]
    declare @FechaActual  datetime
    Set @FechaActual =GETDATE()
    Select CONVERT(varchar,@FechaActual ,24) as [hh:mm:ss]

    Datetime format in
    [mm-dd-yyyy hh:mm:ss.mmm]
    declare @FechaActual  datetime
    Set @FechaActual =GETDATE()
    Select CONVERT(varchar,@FechaActual ,27) as [mm-dd-yyyy hh:mm:ss.mmm]

    Datetime format in
    [MMM DD YYYY HH: SS (AM/PM)]

    Standard: Default
    declare @FechaActual  datetime
    Set @FechaActual =GETDATE()
    Select CONVERT(varchar,@FechaActual ,100) as [MMM DD YYYY HH:SS (AM/PM)]

    Datetime format in
    [MM/DD/YYYY]

    Standard: USA
    declare @FechaActual  datetime
    Set @FechaActual =GETDATE()
    Select CONVERT(varchar,@FechaActual ,101) as [MM/DD/YYYY]  

    Datetime format in
    [YYYY.MM.DD]

    Standard: ANSI
    declare @FechaActual  datetime Set @FechaActual =GETDATE() Select CONVERT(varchar,@FechaActual ,102) as [YYYY.MM.DD]

    Datetime format in
    DD/MM/YYYY format

    Standard: British/French
    declare @FechaActual  datetime Set @FechaActual =GETDATE() Select CONVERT(varchar,@FechaActual ,103) as [DD/MM/YYYY]

    Datetime format in
    DD.MM.YY format

    Standard: German
    declare @FechaActual  datetime Set @FechaActual =GETDATE() Select CONVERT(varchar,@FechaActual ,104) as [DD/MM/YYYY]

    Datetime format in
    DD-MM-YY format

    Standard: Italian
    declare @FechaActual  datetime Set @FechaActual =GETDATE() Select CONVERT(varchar,@FechaActual ,105) as [DD/MM/YYYY]

    Datetime format in
    DD MMM YYYY format

    Standard: Shortened month name
    1 2 3 declare @FechaActual  datetime Set @FechaActual =GETDATE() Select CONVERT(varchar,@FechaActual ,106) as [DD MMM YYYY]

    Datetime format in
    MMM DD,YYYY format

    Standard: Shortened month name
    declare @FechaActual  datetime Set @FechaActual =GETDATE() Select CONVERT(varchar,@FechaActual ,107) as [MMM DD,YYYY]

    Datetime Format
    In HH:MM: SS

    Standard: 24 hour time
    declare @FechaActual  datetime Set @FechaActual =GETDATE() Select CONVERT(varchar,@FechaActual ,108) as [HH:MM:SS]

    Datetime format as
    [MMM DD YYYY hh:mm:ss:mmm(AM/PM)] Standard: Default + milliseconds
    declare @FechaActual  datetime
    Set @FechaActual =GETDATE()
    Select CONVERT(varchar,@FechaActual ,109) as [MMM DD YYYY hh:mm:ss:mmm(AM/PM)]

    Datetime format in
    MM- DD-YY format

    Standard: USA
    declare @FechaActual  datetime
    Set @FechaActual =GETDATE()
    Select CONVERT(varchar,@FechaActual ,110) as [MM-DD-YYYY]

    Datetime format in
    YYYY/MM/DD format

    Standard: JAPAN
    declare @FechaActual  datetime
    Set @FechaActual =GETDATE() Select CONVERT(varchar,@FechaActual ,111) as [YYYY/MM/DD]

    Datetime format in
    YYYYMMDD format

    Standard: ISO
    1 2 3 declare @FechaActual  datetime Set @FechaActual =GETDATE() Select CONVERT(varchar,@FechaActual ,112) as [YYYYMMDD]

    Datetime format in
    DD MMM YYYY HH:MM:SS: MMM

    Standard: Europe default + milliseconds
    declare @FechaActual  datetime
    Set @FechaActual =GETDATE()
    Select CONVERT(varchar,@FechaActual ,113) as [DD MMM YYYY HH:MM:SS:MMM]

    Datetime format in
    HH:MM:SS: MMM

    Standard:  24 hour time with milliseconds
    declare @FechaActual  datetime
    Set @FechaActual =GETDATE()
    Select CONVERT(varchar,@FechaActual ,114) as [DD MMM YYYY HH:MM:SS:MMM]

    Datetime format in
    YYYY-MM-DD HH:MM: SS

    Default: ODBC canonical
    declare @FechaActual  datetime
    Set @FechaActual =GETDATE()
    Select CONVERT(varchar,@FechaActual ,120) as [YYYY-MM-DD HH:MM:SS]

    Datetime format in
    YYYY-MM-DD HH:MM: SS.mmm

    Standard: ODBC canonical with milliseconds
    declare @FechaActual  datetime
    Set @FechaActual =GETDATE()
    Select CONVERT(varchar,@FechaActual ,121) as [YYYY-MM-DD HH:MM:SS.mmm]

    Datetime format in
    YYYY-MM-DDTHH:MM: SS.mmm

    Standard: ISO8601
    declare @FechaActual  datetime
    Set @FechaActual =GETDATE()
    Select CONVERT(varchar,@FechaActual ,126) as [yyyy-mm-ddThh:mi:ss.mmm]

    Datetime format in
    [DD MMM YYYY hh:mi:ss:mmm(AM/PM)]

    Standard: Islamic/Hijri date
    declare @FechaActual  datetime
    Set @FechaActual =GETDATE()
    Select CONVERT(varchar,@FechaActual ,130) as [dd mon yyyy hh:mi:ss:mmm(AM/PM)]

    Recomendaciones importantes antes de formatear

    • 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.

    Enlaces recomendados

    Referencia

    https://www.sqlshack.com

    https://learn.microsoft.com/es-es/sql/t-sql