Funciones Comunes en MySQL para Manipulación de Datos

Funciones de Fecha

MySQL ofrece una variedad de funciones para trabajar con fechas y horas. A continuación, se muestran ejemplos de cómo extraer componentes de fechas, realizar manipulaciones temporales y calcular diferencias.

Extracción de Componentes de Fecha y Hora

Para obtener el año, mes y día:

SELECT YEAR(NOW()), MONTH(NOW()), DAY(NOW());

Para obtener la hora, minuto y segundo:

SELECT HOUR(NOW()), MINUTE(NOW()), SECOND(NOW());

Para obtener una marca de tiempo completa:

SELECT NOW();

Manipulación de Fechas

Sumar un intervalo a una fecha:

SELECT DATE_ADD(fecha_existente, INTERVAL 5 DAY);

Restar un intervalo de tiempo de una fecha:

SELECT DATE_SUB(fecha_existente, INTERVAL 3 HOUR);

Calcular la diferencia en días entre dos fechas:

SELECT DATEDIFF(fecha_fin, fecha_inicio);

Ejemplo Práctico con Fechas

Consideremos una tabla de mensajes:

CREATE TABLE mensajes (
 id INT PRIMARY KEY AUTO_INCREMENT,
 texto VARCHAR(255) NOT NULL,
 fecha_envio DATETIME
);

Insertando datos de ejemplo:

INSERT INTO mensajes(texto, fecha_envio) VALUES('Primer mensaje', NOW());
INSERT INTO mensajes(texto, fecha_envio) VALUES('Segundo mensaje', NOW());

Para mostrar todos los mensajes, limitando la fecha solo a la parte del día:

SELECT id, texto, DATE(fecha_envio) AS fecha_publicacion FROM mensajes;

Para consultar mensajes publicados en los últimos 2 minutos:

SELECT * FROM mensajes WHERE DATE_ADD(fecha_envio, INTERVAL 2 MINUTE) > NOW();

Funciones de Cadena

Las funciones de cadena son esenciales para manipular y formatear texto en consultas SQL.

Ejemplos con Cadenas

Obtener el conjunto de caracteres de una columna de nombre:

SELECT CHARSET(nombre) FROM empleados;

Formatear la visualización de resultados de exámenes. Suponiendo una tabla resultados\_examenes con columnas nombre, ingles, matematicas:

SELECT CONCAT(nombre, ' obtuvo ', ingles, ' en Inglés y ', matematicas, ' en Matemáticas.') AS ResumenExamen
FROM resultados_examenes;

Calcular el número de bytes que ocupa un nombre en la tabla resultados\_examenes. La función LENGTH devuelve la longitud en bytes.

SELECT LENGTH(nombre), nombre FROM resultados_examenes;

Reemplazar una subcadena dentro de otra. Para reemplazar todas las 'S' por 'Shanghai' en la columna nombre de la tabla empleados:

SELECT REPLACE(nombre, 'S', 'Shanghai') AS nombre_modificado, nombre FROM empleados;

Extraer una subcadena. Para obtener los caracteres del segundo al tercer carácter (2 caracteres de longitud) del campo nombre en la tabla empleados:

SELECT SUBSTRING(nombre, 2, 2) AS subcadena, nombre FROM empleados;

Convertir el primer carácter a minúscula y el resto a su estado original para los nombres de empleados:

SELECT CONCAT(LCASE(SUBSTRING(nombre, 1, 1)), SUBSTRING(nombre, 2)) AS nombre_formateado FROM empleados;

Funciones Matemáticas

MySQL proporciona funciones matemáticas para realizar cálculos numéricos.

Operaciones Matemáticas Comunes

Calcular el valor absoluto:

SELECT ABS(-150.75);

Redondear al entero superior (techo):

SELECT CEILING(35.12);

Redondear al entero inferior (suelo):

SELECT FLOOR(35.98);

Formatear un número con dos decimales, aplicando redondeo (cuatro operaciones decimales):

SELECT FORMAT(7.89123, 2);

Generar un número aletaorio entre 0 y 1:

SELECT RAND();

Otras Funciones Útiles

Existen diversas funciones adicionales que facilitan tareas comunes en MySQL.

Funciones Variadas

Obtener el usuario y host actual de la conexión:

SELECT USER();

Generar un hash MD5 para una cadena:

SELECT MD5('contraseña_secreta');

Mostrar el nombre de la base de datos actualmente en uso:

SELECT DATABASE();

Manejar valores NULL. Si el primer argumento es NULL, devuelve el segundo; de lo contrario, devuelve el primero.

SELECT IFNULL('valor_existente', 'valor_por_defecto');
SELECT IFNULL(NULL, 'valor_por_defecto');

Etiquetas: MySQL SQL funciones fecha cadena

Publicado el 11-1 20:04