Saltar al contenido

Comparando fechas en MySQL para alertar a un servicio de monitoreo

Desde Diciembre último he tenido ciertas situaciones con uno de los sistemas a los que le doy soporte. Este recibe actualización de datos desde otro sistema por las noches, en esa tabla hay una columna con la fecha por lo que la última fecha disponible hoy tendría que ser la de ayer.

En el sistema de monitoreo que tengo quise establecer una alerta que me dijera si los datos de ayer se cargaron, este sistema no me da la opción de comparar la fecha de hoy con el que devolvía la consulta entonces me puse a ver como lo solucionaba llamando a un procedimiento almacenado para devolver un valor fijo. Aquí ambas fechas está en formato AAAA-MM-DD.

Algoritmo VerificarFecha
    Establecer Ayer a Hoy menos un día
    Determinar UltimaFecha
    Si UltimaFecha es igual a Ayer
        Entonces Devolver CORRECTO
        Si No Devolver INCORRECTO
    Fin Si
Fin Algoritmo

Este pseudocódigo nos permite ver que en verdad son pasos simples y ordenados; obtenemos la fecha de ayer, las comparamos y devolvemos el resultado que siempre será CORRECTO o INCORRECTO.

DROP procedure IF EXISTS `VerificarFecha`;

DELIMITER $$

CREATE PROCEDURE `VerificarFecha`()
BEGIN
    DECLARE ultimaFecha DATE;
    DECLARE ayer DATE;
    SELECT CURDATE() - INTERVAL 1 DAY INTO ayer;
    SELECT fecha INTO ultimaFecha FROM tabla ORDER BY fecha DESC LIMIT 1;
    IF ultimaFecha = ayer
        THEN SELECT "CORRECTO";
        ELSE SELECT "INCORRECTO";
    END IF;
END$$

DELIMITER ;

Con el pseudocódigo generamos el procedimiento almacenado. Esta solución depende de la fecha del sistema donde está el servidor de bases de datos instalado, sin embargo para mi propósito es bastante aceptable.