¿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
Top 6 Editors With Excellent Preset / Filter Libraries to Speed Up Editing Workflow for Travel & Landscape Photography (Darktable, Affinity, Luminar etc.)
Travel and landscape photography is majestic, but editing hundreds of images? Not so much. Luckily, there are photo editors with…