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.
¿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ódigo | Descripción | Ejemplo | Resultado |
---|---|---|---|
dd | Día del mes (con dos dígitos) | CONVERT(varchar(2), '2024-03-11', 103) | 11 |
mm | Mes del año (con dos dígitos) | CONVERT(varchar(2), '2024-03-11', 103) | 03 |
yyyy | Año (con cuatro dígitos) | CONVERT(varchar(4), '2024-03-11', 103) | 2024 |
hh | Hora (formato de 12 horas) | CONVERT(varchar(2), '2024-03-11 16:42:59', 108) | 04 |
HH | Hora (formato de 24 horas) | CONVERT(varchar(2), '2024-03-11 16:42:59', 108) | 16 |
mi | Minutos | CONVERT(varchar(2), '2024-03-11 16:42:59', 108) | 42 |
ss | Segundos | CONVERT(varchar(2), '2024-03-11 16:42:59', 108) | 59 |
Ejemplos prácticos para Formatear fecha en SQL Server:

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
- guia para convertir horas en sql server
- Como sacar fechas y hora en sql server
- Diferencia entre convert y cast
- formatear fechas en mysql
- comando where ejemplos practicos
- validar fechas en sql guia completa
- DateDiff para calcular edad de una persona
- dias laborales, calcular guia
- Between sintaxis en sql
- funcion format sql server guia practica
- Replace en sql guia detallada
- Funcion substring guia maestra