¿Alguna vez te has encontrado con una fecha rara en tu base de datos y te preguntas: “¿Qué significa esto?” 😵💫 No te preocupes. Trabajar con fechas en SQL puede parecer complicado al principio, pero con un poco de diversión y ejemplos claros, aprenderás a domarlas como un profesional.
TL;DR (Too Long; Didn’t Read)
En SQL, las fechas pueden formatearse para que se vean bonitas y sean fáciles de leer en español. Esto se logra con funciones como FORMAT(), CONVERT() y DATE_FORMAT(). Puedes obtener día, mes, año… ¡lo que necesites! Es súper útil cuando estás mostrando datos en aplicaciones o reportes.
¿Por qué formatear fechas en SQL?
Imagina que tienes esta fecha: 2024-06-24. Para una máquina está genial. Pero para un humano, sobre todo si habla español, algo como “24 de junio de 2024” sería mucho más claro.
Entonces, la idea es: la base de datos guarda fechas de una manera precisa, pero tú puedes decidir cómo mostrarlas.
Conociendo el formato estándar: AAAA-MM-DD
SQL guarda las fechas en formato YYYY-MM-DD (año-mes-día). Por ejemplo:
2024-06-24
Este formato es el ideal para hacer cálculos y comparaciones en SQL (⬆️ súper importante para búsquedas o filtros). Pero para mostrar estos datos… meh 😐. Así que vamos a ver cómo ponerle sabor hispano a esas fechas.
¿Qué herramientas hay para formatear fechas?
Dependiendo del sistema de base de datos que estés usando, hay diferentes formas. Aquí te va un resumen:
- SQL Server: usa CONVERT() y FORMAT()
- MySQL: usa DATE_FORMAT()
- PostgreSQL: usa TO_CHAR()
Veamos ejemplos con cada uno.
1. Formato de fechas en SQL Server
La función FORMAT() te permite mostrar la fecha como quieras:
SELECT FORMAT(GETDATE(), 'dd MMMM yyyy', 'es-es') AS FechaBonita;
Este código devolverá algo como:
24 junio 2024
¡Pero hay más! Puedes incluir día de la semana:
SELECT FORMAT(GETDATE(), 'dddd, dd MMMM yyyy', 'es-es') AS FechaElegante;
Resultado:
lunes, 24 junio 2024
Es-es indica que queremos el formato en español. Así que cuidado con ese detalle.
2. Formato de fechas en MySQL
MySQL usa la función DATE_FORMAT(), que es super poderosa. Aquí un ejemplo:
SELECT DATE_FORMAT(NOW(), '%d de %M de %Y') AS FechaEnEspanol;
Esto dará como resultado:
24 de junio de 2024
La lista de códigos más comunes para DATE_FORMAT() es:
- %d: día (01 al 31)
- %M: nombre del mes (en inglés o el idioma del sistema)
- %Y: año (completo)
Si necesitas que el mes esté en español y no en inglés, asegúrate de configurar el idioma o usar funciones adicionales para traducir.
3. En PostgreSQL
En PostgreSQL, usamos la función TO_CHAR(). Mira este ejemplo:
SELECT TO_CHAR(NOW(), 'DD "de" Month "de" YYYY') AS FechaConEstilo;
Esto genera:
24 de June de 2024
“¡Ajá!”, dirás. A veces el mes sale en inglés. ¿Solución? Cambiar la configuración del lenguaje de la sesión:
SET lc_time = 'es_ES'; SELECT TO_CHAR(NOW(), 'DD "de" Month "de" YYYY') AS FechaBonita;
Con eso, ahora sí:
24 de junio de 2024
¿Y si solo quiero el día, mes o año?
Fácil. Con estas funciones puedes sacar lo que quieras:
- YEAR(fecha) → año
- MONTH(fecha) → mes
- DAY(fecha) → día
Ejemplo en SQL Server:
SELECT YEAR(GETDATE()) AS Anio, MONTH(GETDATE()) AS Mes, DAY(GETDATE()) AS Dia;
Y en MySQL sería muy similar.
Pro tip: Nombres de días y meses en español
Una de las cosas más bonitas de formatear fechas es mostrar nombres como “lunes” o “diciembre”. Pero… eso depende del idioma que tengas configurado. Asegúrate de usar ‘es-es’ o lc_time = ‘es_ES’ para tener nombres en español.
¡Hora de jugar! 🎲
Vamos a ver cómo mostrar esta fecha ficticia: 2024-12-31
En formato largo:
- “martes, 31 de diciembre de 2024”
En formato corto:
- “31/12/2024”
Y si te quieres poner elegante: “31 de diciembre de 2024”
Todo eso lo puedes lograr en SQL usando FORMAT(), DATE_FORMAT() o TO_CHAR(), ¡según tu sistema!
Fechas para reportes: ¡más que estética!
No todo es verlo bonito. Formatear fechas es vital al:
- Crear gráficos que se entiendan
- Filtrar información por años o meses
- Ordenar datos cronológicamente
- Generar reportes legibles
Una buena presentación reduce errores y hace tu trabajo más confiable.
Ejercicio rápido 🧠
¿Puedes adivinar qué devuelve esto?
SELECT DATE_FORMAT('2024-06-30', '%W %d %M %Y');
Respuesta esperada:
domingo 30 junio 2024
¡Bravo si lo adivinaste! 🙌 Si no, no pasa nada: sigue practicando.
Resumen final
- Los formatos de fecha pueden ser simples o elaborados
- Las funciones cambian según el sistema (MySQL, SQL Server, PostgreSQL)
- Configura el idioma si quieres obtener nombres en español
- ¡Formatear fechas hace tu trabajo más profesional!
Así que ya lo sabes: la próxima vez que veas “2024-06-24” en tu base de datos, dale un toque humano con un buen formato en español. 💃🕺 ¡Tus usuarios te lo agradecerán!
yehiweb
Related posts
New Articles
11ty Live Reload Not Working? Here’s How to Fix
You’ve just installed 11ty (Eleventy) and you’re excited. You fire up your project, make a small change… and nothing happens….