Mientras investigaba esto, pensé que sería bueno modificar la solución BETWEEN para mostrar un ejemplo para una fecha de cadena / no estática en particular, pero más bien una fecha variable, o la de hoy como CURRENT_DATE()
. Esto usará el índice en la columna log_timestamp.
SELECT *
FROM some_table
WHERE
log_timestamp
BETWEEN
timestamp(CURRENT_DATE())
AND
timestamp(DATE_ADD(CURRENT_DATE(), INTERVAL '86399.999999' SECOND_MICROSECOND));
Hice los segundos / microsegundos para evitar el caso de las 12 AM del día siguiente. Sin embargo, también puede hacer `INTERVALO '1 DÍA' a través de operadores de comparación para un enfoque no BETWEEN más fácil de leer:
SELECT *
FROM some_table
WHERE
log_timestamp >= timestamp(CURRENT_DATE()) AND
log_timestamp < timestamp(DATE_ADD(CURRENT_DATE(), INTERVAL 1 DAY));
Ambos enfoques utilizarán el índice y deberían funcionar MUCHO más rápido. Ambos parecen ser igualmente rápidos.