Tema SQL
TIMESTAMPDIFF() (MySQL / MariaDB)
Calcula la diferencia entre dos expresiones de fecha/hora en la unidad indicada (DAY, HOUR, MINUTE, YEAR, etc.). La semántica es «cuántas unidades enteras caben entre el primer instante y el segundo» según reglas del motor.
Descripción
TIMESTAMPDIFF(unidad, fecha_menor_o_inicio, fecha_mayor_o_fin) devuelve un entero con signo según el orden de los argumentos (si inviertes fechas, el resultado cambia de signo). Para MONTH y YEAR el cálculo es a nivel calendario aproximado (no siempre igual a sumar 30 días). Para DAY en marcas de tiempo con hora, trunca a días completos según la diferencia de instantes. Comparar con DATEDIFF en MySQL que solo devuelve días entre fechas DATE. En otros motores: DATEDIFF, EXTRACT, o resta de timestamps. Documenta siempre la zona horaria: convierte a UTC antes si cruzas DST.
Estructura general
Forma habitual de la sentencia: orden de cláusulas, qué parte filtra, agrupa o proyecta columnas, y qué devuelve el motor. Cópiala como plantilla y sustituye nombres por tus tablas reales.
TIMESTAMPDIFF(unidad, fecha_inicio, fecha_fin)
Componentes
Cada componente tiene un papel concreto en la ejecución lógica de la sentencia. Léelos en orden: así entiendes qué puedes omitir, qué es obligatorio y qué expresiones son válidas en cada sitio según tu motor.
- Unidad
- YEAR, QUARTER, MONTH, WEEK, DAY, HOUR, MINUTE, SECOND, MICROSECOND.
- Orden
- fecha_inicio y fecha_fin: el resultado mide el salto de la primera a la segunda.
- Precisión
- Para fracciones de día usa SECOND o HOUR, no DAY, si necesitas granularidad.
Ejemplos
Ejemplo 1
SELECT TIMESTAMPDIFF(DAY, '2026-01-01', '2026-01-10') AS dias;
-- 9
SELECT TIMESTAMPDIFF(MONTH, contratado_en, CURDATE()) AS meses_antiguedad
FROM empleados;
Ejemplo 2
SELECT TIMESTAMPDIFF(HOUR, inicio_sesion, fin_sesion) AS horas
FROM sesiones_usuario
WHERE id = 100;
Los ejemplos son ilustrativos. En producción usa consultas parametrizadas (prepared statements), revisa índices y aplica el principio de menor privilegio en cuentas de base de datos.