...

Cómo usar funciones de texto y fecha en SQL

Cuando trabajamos con bases de datos, los valores no siempre se limitan a números. También necesitamos cadenas de texto (como nombres o descripciones) y fechas (como la fecha de contratación de un empleado).

SQL ofrece un conjunto muy útil de funciones de texto y fecha que permiten:

  • Normalizar datos (ej. pasar todo a mayúsculas).
  • Extraer fragmentos de información (ej. año de una fecha).
  • Realizar cálculos (ej. días de diferencia entre dos fechas).

En este artículo aprenderás a usar estas funciones con ejemplos prácticos que puedes ejecutar directamente en db-fiddle.com.


Funciones de texto en SQL

Algunas funciones comunes que encontrarás en distintos motores SQL:

FunciónDescripciónEjemplo
UPPER()Convierte texto a mayúsculasUPPER(nombre)
LOWER()Convierte texto a minúsculasLOWER(nombre)
CONCAT()Une cadenas de textoCONCAT(nombre, ' ', puesto)
SUBSTRING()Extrae una parte del textoSUBSTRING(nombre FROM 1 FOR 3)
TRIM()Elimina espacios en blancoTRIM(nombre)
LENGTH()Devuelve la longitud de una cadenaLENGTH(nombre)

Ejemplo 1: Nombre completo en mayúsculas

SELECT UPPER(nombre) AS nombre_mayusculas
FROM empleados;

Ejemplo 2: Inicial del empleado

SELECT nombre,
       SUBSTRING(nombre, 1, 1) AS inicial
FROM empleados;

Ejemplo 3: Nombre y puesto concatenados

SELECT CONCAT(nombre, ' - ', puesto) AS descripcion
FROM empleados;

Funciones de fecha en SQL

El soporte varía según el motor, pero las más comunes son:

FunciónSQL ServerPostgreSQL/MySQL/SQLite
Fecha actualGETDATE()CURRENT_DATE o NOW()
Extraer año/mes/díaYEAR(), MONTH()EXTRACT(YEAR FROM fecha)
Diferencia de fechasDATEDIFF()AGE() (Postgres) / DATEDIFF() (MySQL)
Sumar/restar fechasDATEADD()fecha + INTERVAL 'x days'

Ejemplo 4: Años de antigüedad de un empleado

-- SQL Server
SELECT nombre,
       DATEDIFF(YEAR, fecha_contratacion, GETDATE()) AS antiguedad_anios
FROM empleados;

-- PostgreSQL / MySQL
SELECT nombre,
       EXTRACT(YEAR FROM AGE(CURRENT_DATE, fecha_contratacion)) AS antiguedad_anios
FROM empleados;

Ejemplo 5: Empleados contratados en 2022

-- SQL Server
SELECT nombre, fecha_contratacion
FROM empleados
WHERE YEAR(fecha_contratacion) = 2022;

-- PostgreSQL
SELECT nombre, fecha_contratacion
FROM empleados
WHERE EXTRACT(YEAR FROM fecha_contratacion) = 2022;

Buenas prácticas

  • Haz CAST explícito si combinas tipos de datos (especialmente en CONCAT).
  • Normaliza fechas (usa siempre el mismo formato).
  • Evita aplicar funciones en la cláusula WHERE sobre columnas con índices (puede afectar rendimiento).
  • Documenta reglas de negocio (ej. cómo defines “antigüedad”).

Diferencias entre motores SQL

  • SQL Server: funciones como GETDATE(), YEAR(), DATEADD() y DATEDIFF() son comunes.
  • PostgreSQL: muy flexible, permite AGE() y EXTRACT().
  • MySQL: soporta DATEDIFF() y DATE_ADD().
  • SQLite: menos funciones nativas, pero soporta date(), strftime().

Conclusión

Las funciones de texto y fecha en SQL te permiten manipular y transformar la información para generar reportes más útiles y responder preguntas clave del negocio.

Dominar estas funciones te convertirá en un usuario más versátil y preparado para cualquier análisis de datos.

Empieza ahora mismo a practicar con los ejemplos de este artículo en db-fiddle.com.

Deja un comentario

Seraphinite AcceleratorOptimized by Seraphinite Accelerator
Turns on site high speed to be attractive for people and search engines.